Python 数据可视化:Matplotlib Heatmap 热力图,相关系数矩阵图(放入自写库,一行代码搞定复杂细节绘图)

在这里插入图片描述
  这是一个自写库系列,即笔者在数据可视化路上踩过的坑的汇总,并自定义函数和传入参数来实现快速避坑 + 快速绘制出复杂精美的图片。

引言

  Python 的绘图功能非常强大,如果能将已有的绘图库和各种复杂操作汇总在一个自己写的库/包中,并实现一行代码就调用并实现复杂的绘图功能,那就更强大了。所以本博文只强调绘图代码的实现,绘图中的统计学知识(名义变量,数值变量,xx图与xx图的区别等等)与 Python 基础库操作(seaborn,matplotlib)并不会提及,不过也欢迎关注,后续会有更多更广更丰富的知识疯狂输出。


使用方法 & 实现效果

在这里插入图片描述
更改一下颜色参数
在这里插入图片描述
下面是 myplots 里面的绘图代码,配置已经是非常详细了,字体字号都有,赶紧用起来吧!

# 基础绘图库
import matplotlib.pyplot as plt
import seaborn as sns
# %matplotlib inline
# 各种细节配置如 文字大小,图例文字等杂项
large = 22; med = 16; small = 12
params = {'axes.titlesize': large,
          'legend.fontsize': med,
          'figure.figsize': (16, 10),
          'axes.labelsize': med,
          'axes.titlesize': med,
          'xtick.labelsize': med,
          'ytick.labelsize': med,
          'figure.titlesize': large}
plt.rcParams.update(params)
plt.style.use('seaborn-whitegrid')
sns.set_style("white")
plt.rc('font', **{'family': 'Microsoft YaHei, SimHei'})  # 设置中文字体的支持
# sns.set(font='SimHei')  # 解决Seaborn中文显示问题,但会自动添加背景灰色网格
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题

# ===================== 热力图 ====================
def heatmap(data, method='pearson', camp='RdYlGn', figsize=(10 ,8), ax=None):
    """
    data: 整份数据
    method:默认为 pearson 系数
    camp:默认为:RdYlGn-红黄蓝;YlGnBu-黄绿蓝;Blues/Greens 也是不错的选择
    figsize: 默认为 10,8
    """
    ## 消除斜对角颜色重复的色块
    #     mask = np.zeros_like(df2.corr())
    #     mask[np.tril_indices_from(mask)] = True
    plt.figure(figsize=figsize, dpi= 80)
    sns.heatmap(data.corr(method=method), \
                xticklabels=data.corr(method=method).columns, \
                yticklabels=data.corr(method=method).columns, cmap=camp, \
                center=0, annot=True, ax=ax)
    # 要想实现只是留下对角线一半的效果,括号内的参数可以加上 mask=mask

  拓展:以后这个系列的所有快速自己定义的绘图函数都可以放到同一个自写库中,直接调用,超快,超简洁,超美丽。



后记

  数据分析,商业实践,数据可视化,网络爬虫,统计学,Excel,Word, 社会心理学,认知心理学,行为科学,民族意志学 各种专栏后续疯狂补充

  欢迎评论与私信交流!

发布了37 篇原创文章 · 获赞 25 · 访问量 4390

猜你喜欢

转载自blog.csdn.net/weixin_43329700/article/details/104356714