"pythonic生物人"的第53篇分享

热力图(heatmap)可通过颜色深浅变化,优雅的展示数据的差异;本篇详细介绍python seaborn绘制热图(手把手讲解)。

本文您将学到什么?

1、matplotlib绘制热图

2、seaborn绘制热图 

2.0 数据集准备

2.1 seaborn绘制heatmap 2.1.1 seaborn默认参数绘制hetmap2.1.2 colorbar(图例)范围修改:vmin、vmax2.1.3 修改热图颜色盘(colormap):cmp

  • 使用matplotlib中colormap

  • 使用Seaborn颜色盘

  • 使用palettable库中颜色盘

2.1.4 修改图例中心数据值大小:center2.1.5 热图中文本开关:annot2.1.6 格子中数据的格式化输出:fmt2.1.7 格子中数据(字体大小、磅值、颜色)等设置:annot_kws2.1.8 格子外框宽度、颜色设置:linewidths、linecolor2.1.9 图例开关:cbar2.1.10 图例位置、名称、标签等设置:cbar_kws2.1.11 热图中只显示部分符合条件的数据:mask2.1.12 自定义x轴、y轴标签:xticklabels、yticklabels

3、seaborn.heatmap所有参数详解代码

正文开始啦

1、matplotlib绘制热图

matplotlib可通过以下两种方法绘制heamap;

  • matplotlib.axes.Axes.imshow
  • matplotlib.pyplot.imshow

原始效果图,挺丑陋的;改进后效果图(虽然要写很多辅助函数实现,但是可以很好的实现自定义热图,需要高度个性化的小伙伴可以去摸索); 


2、seaborn绘制热图

seaborn在matplotlib的基础上封装了个seaborn.heatmap,非常傻瓜式操作,我等调包侠的福音,效果可以赶得上R语言了,不逼逼,下面上干货:

2.0 数据集准备

使用鸢尾花iris数据集,数据集详细介绍请戳:鸢尾花iris数据集;

import matplotlib.pyplot as pltimport numpy as npimport pandas as pdfrom pandas import Series,DataFrameimport seaborn as snsimport palettable#python颜色库from sklearn import datasets plt.rcParams['font.sans-serif']=['SimHei']  # 用于显示中文plt.rcParams['axes.unicode_minus'] = False  # 用于显示中文iris=datasets.load_iris()x, y = iris.data, iris.targetpd_iris = pd.DataFrame(np.hstack((x, y.reshape(150, 1))),columns=['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(cm)','class'] )plt.figure(dpi=200, figsize=(10,6))data1 = np.array(pd_iris['sepal length(cm)']).reshape(25,6)#Series转np.arraydf = pd.DataFrame(data1,                   index=[chr(i) for i in range(65, 90)],#DataFrame的行标签设置为大写字母                  columns=["a","b","c","d","e","f"])#设置DataFrame的列标签

用来绘制热图的数据集是什么样子的?其实就是取iris中的一列(150个值),转化为一个25x6的DataFrame数据集,如下:

print(df.shape)df.head()

2.1 seaborn绘制heatmap

语法:seaborn.heatmap

2.1.1 seaborn默认参数绘制hetmap

plt.figure(dpi=120)sns.heatmap(data=df,#矩阵数据集,数据的index和columns分别为heatmap的y轴方向和x轴方向标签                        )plt.title('所有参数默认')

2.1.2 colorbar(图例)范围修改:vmin、vmax

#右侧colorbar范围修改#注意colorbar范围变化,左图颜色随之变化plt.clf()plt.figure(dpi=120)sns.heatmap(data=df,#矩阵数据集,数据的index和columns分别为heatmap的y轴方向和x轴方向标签                 vmin=5,#图例(右侧颜色条color bar)中最小显示值                  vmax=8,#图例(右侧颜色条color bar)中最大显示值           )plt.title('右侧colorbar显示范围修改:vmin、vmax') 

2.1.3 修改热图颜色盘(colormap):cmp

感觉默认颜色太丑陋,可以换个颜色盘,cmp参数控制hetmap颜色;
可以使用matplotlib颜色盘、seaborn颜色盘、palettable库中颜色盘

使用matplotlib中colormap

了解matplotlib中所有colormap请戳:matplotlib中colormap使用详解

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=plt.get_cmap('Set3'),#使用matplotlib中的颜色盘           )plt.title("使用matplotlib中的颜色盘:cmap=plt.get_cmap('Set3')")

# 感觉颜色还是丑,那就再换个plt.figure(dpi=120)sns.heatmap(data=df,            cmap=plt.get_cmap('tab20c'),#matplotlib中的颜色盘'tab20c'           )plt.title("使用matplotlib中的颜色盘:cmap=plt.get_cmap('tab20c')")

#感觉太油腻,太花哨,那就来个纯一点的(色度依次增加,请看右边图例颜色变化)plt.figure(dpi=120)sns.heatmap(data=df,            cmap=plt.get_cmap('Greens'),#matplotlib中的颜色盘'Greens'           )plt.title("使用matplotlib中的颜色盘:cmap=plt.get_cmap('Greens')")

#色度依次递减,注意比较右边图例颜色变化plt.figure(dpi=120)sns.heatmap(data=df,                 #cmap选取的颜色条,有的是由浅到深('Greens'),有的是相反的('Greens_r')            cmap=plt.get_cmap('Greens_r'),#matplotlib中的颜色盘'Greens_r'           )plt.title("使用matplotlib中的颜色盘:cmap=plt.get_cmap('Greens_r')")

使用Seaborn颜色盘

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=sns.dark_palette("#2ecc71", as_cmap=True),#seaborn 深色色盘:sns.dark_palette使用           )plt.title("使用seaborn dark颜色盘:cmap=sns.dark_palette('#2ecc71', as_cmap=True)")

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=sns.light_palette("#2ecc71", as_cmap=True),#淡色色盘:sns.light_palette()使用           )plt.title("使用seaborn light颜色盘:sns.light_palette('#2ecc71', as_cmap=True)")

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=sns.diverging_palette(10, 220, sep=80, n=7),#区分度显著色盘:sns.diverging_palette()使用           )plt.title("使用seaborn diverging颜色盘:sns.diverging_palette(10, 220, sep=80, n=7)")

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=sns.cubehelix_palette(as_cmap=True),#渐变色盘:sns.cubehelix_palette()使用           )plt.title("使用seaborn cubehelix颜色盘:sns.diverging_palette(220, 20, sep=20, as_cmap=True)")

使用palettable库中颜色盘

关于python palettable库使用请戳:python Palettable库使用详解

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,#使用palettable库中颜色条           )plt.title("使用palettable库颜色盘:palettable.cartocolors.diverging.ArmyRose_7.mpl_colors")

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cmocean.diverging.Curl_10.mpl_colors,#使用palettable库中颜色条           )plt.title("使用palettable库颜色盘:palettable.cmocean.diverging.Curl_10.mpl_colors")

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.tableau.TrafficLight_9.mpl_colors,#使用palettable库中颜色条           )plt.title("使用palettable库颜色盘:palettable.tableau.TrafficLight_9.mpl_colors")

2.1.4 修改图例中心数据值大小:center

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,            center=7,#color bar的中心数据值大小,可以控制整个热图的颜盘深浅           )plt.title("color bar的中心数据值大小:center")

2.1.5 热图中文本开关:annot

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,            annot=True,#默认为False,当为True时,在每个格子写入data中数据           )plt.title("每个格子写入data中数据:annot=True")

2.1.6 格子中数据的格式化输出:fmt

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,            annot=True,#默认为False,当为True时,在每个格子写入data中数据            fmt=".2f",#设置每个格子中数据的格式,参考之前的文章,此处保留两位小数           )plt.title("格子中数据的格式化输出:fmt")

2.1.7 格子中数据(字体大小、磅值、颜色)等设置:annot_kws

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,            annot=True,#默认为False,当为True时,在每个格子写入data中数据            annot_kws={'size':8,'weight':'normal', 'color':'blue'},#设置格子中数据的大小、粗细、颜色           )plt.title("格子中数据(字体大小、磅值、颜色)等设置:annot_kws")

2.1.8 格子外框宽度、颜色设置:linewidths、linecolor

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,            linewidths=1,#每个格子边框宽度,默认为0            linecolor='red',#每个格子边框颜色,默认为白色           )plt.title("格子外框宽度、颜色设置:linewidths、linecolor")

2.1.9 图例开关:cbar

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,            cbar=False,#右侧图例(color bar)开关,默认为True显示           )plt.title("图例开关:cbar")

2.1.10 图例位置、名称、标签等设置:cbar_kws

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,            cbar=True,            cbar_kws={'label': 'ColorbarName', #color bar的名称'orientation': 'horizontal',#color bar的方向设置,默认为'vertical',可水平显示'horizontal'"ticks":np.arange(4.5,8,0.5),#color bar中刻度值范围和间隔"format":"%.3f",#格式化输出color bar中刻度值"pad":0.15,#color bar与热图之间距离,距离变大热图会被压缩                                                   },           )plt.title("图例位置、名称、标签等设置:cbar_kws")

2.1.11 热图中只显示部分符合条件的数据:mask

plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,            mask=df<6.0,#热图中显示部分数据:显示数值小于6的数据          )plt.title("热图中只显示部分符合条件的数据:mask")

2.1.12 自定义x轴、y轴标签:xticklabels、yticklabels

# linewidths、linecolor参数plt.figure(dpi=120)sns.heatmap(data=df,            cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,            xticklabels=['三连啊','关注公众号啊','pythonic生物人','收藏啊','点赞啊','老铁三连三连'] , #x轴方向刻度标签开关、赋值,可选“auto”, bool, list-like(传入列表), or int,            yticklabels=True, #y轴方向刻度标签开关、同x轴         )plt.title("自定义x轴、y轴标签:xticklabels、yticklabels")#['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(cm)','class'] 

3、seaborn.heatmap所有参数详解代码

感兴趣的小火伴,可以关注我的公众号免费获取源代码:

4、参考资料

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.imshow.html#matplotlib.pyplot.imshow

http://seaborn.pydata.org/generated/seaborn.heatmap.html?highlight=heatmap#seaborn.heatmap

本篇结束,下一篇详细介绍聚类热图,感兴趣小伙伴欢迎跟踪我。

同系列文章


Python可视化|matplotlib12-垂直|水平|堆积条形图详解Python可视化|matplotlib13-直方图(histogram)详解Python可视化|08-Palettable库中颜色条Colormap(四)Python可视化|matplotlib07-自带颜色条Colormap(三)

原创不易"点赞"、"在看"励下呗

matplotlib 标签_Python可视化matplotlibamp;seborn14热图heatmap相关推荐

  1. 热图(Heatmap)绘制(matplotlib与seaborn)

    热图是数据统计中经常使用的一种数据表示方法,它能够直观地反映数据特征,查看数据总体情况,在诸多领域具有广泛应用. 一:matplotlib绘制方法 1.基础绘制 热图用以表示的是矩阵数据,例如相关阵. ...

  2. Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)

    Python使用matplotlib可视化相关性分析热力图图heatmap.使用seaborn中的heatmap函数可视化相关性热力图(Correllogram) 目录

  3. ML之MIC:利用某数据集计算机最大信息系数MIC并可视化MIC矩阵热图及其代码实现

    ML之MIC:利用某数据集计算机最大信息系数MIC并可视化MIC矩阵热图及其代码实现 目录 利用某数据集计算机最大信息系数MIC并可视化MIC矩阵热图及其代码实现 实现结果 实现代码 利用某数据集计算 ...

  4. 如何在R语言中建立六边形矩阵热图heatmap可视化

    原文链接:http://tecdat.cn/?p=18879 这是一个六边形热图可视化程序,主要用到的知识RColorBrewer,fields,也就是R中的可视化绘图库(点击文末"阅读原文 ...

  5. 聚类热图分类注释_Python可视化matplotlibamp;seborn15-聚类热图clustermap(建议收藏)...

    聚类热图可以简单理解为:使用距离算法将距离相近的东西成簇聚为一类. 本篇使用python中seaborn.clustermap绘制聚类热图(clustermap). 本文将了解到什么? 欢迎随缘关注@ ...

  6. R 生信数据可视化(聚类热图)

    一.准备示例数据 下载:链接:https://pan.baidu.com/s/1_b8swSkWDqIHZi6UwKaspA 提取码:pll7 文件说明 示例数据,其中数据均为虚拟数据,与实际生物学过 ...

  7. 怎么让热图显示基因名_R 生信数据可视化 01 | 聚类热图

    一. 示例数据准备 下载:链接:https://pan.baidu.com/s/1_b8swSkWDqIHZi6UwKaspA 提取码:pll7 文件说明 示例数据,其中数据均为虚拟数据,与实际生物学 ...

  8. 基于HTML5实现3D热图Heatmap应用

    Heatmap热图通过众多数据点信息,汇聚成直观可视化颜色效果,热图已广泛被应用于气象预报.医疗成像.机房温度监控等行业,甚至应用于竞技体育领域的数据分析. http://www.hightopo.c ...

  9. 【R】 绘制 热图 heatmap

    最近发现pheatmap画热图挺好看的,有机会也使用一下~~~ http://www.bjt.name/tag/heatmap/ R 绘制 heatmap NBA联盟50位顶级球员的指标表现 介绍如何 ...

最新文章

  1. 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java
  2. 写在开年:移植wolfssl4.3.0到w60x_sdk_3.04时的一点问题
  3. 数据库误操作后悔药来了:AnalyticDB PostgreSQL教你实现分布式一致性备份恢复
  4. matlab 取43阶上部分,求教关于matlab四阶累积量函数里变量的意义。
  5. java在实际应用_Java应用程序如何部署在“现实世界”中?
  6. Linux笔记-压缩包安装jdk1.7(bash与.cshrc)
  7. 如何把Eclipse工程导入到Android Studio
  8. 【python】时间处理函数以及文件操作
  9. 贺:MSN-.NET 技术交流群荣登群首页
  10. EC600 QuecPython下载脚本代码到开发板、设置开机自运行
  11. C笔记 -- 一个为 IT人士打造的笔记工具
  12. 呼吸机吸气触发:压力触发与流量触发
  13. 【毕业设计】单片机森林火灾监控防护预警系统 - 物联网 嵌入式
  14. Codeforces 1010D Mars rover
  15. Centos版Linux 一些常用操作命令 收集
  16. php实现发送微信模板消息的方法
  17. google 游戏下载
  18. 多浏览器同步测试工具的设计与实现
  19. 交互设计超全学习清单:3本书,2个播客,6门视频课程,8个优秀网站
  20. ISCSI HBA卡和普通网卡的区别

热门文章

  1. Python入门100题 | 第067题
  2. Python入门100题 | 第027题
  3. urllib.parse包学习
  4. 订单系统:从0到1设计思路
  5. java开发中的Mutex vs Semaphore
  6. UC伯克利博士尤洋回国创业,曾破ImageNet纪录!已获超千万融资
  7. 图像孔洞填充与小连通域的删除
  8. 梯度下降和随机梯度下降为什么能下降?
  9. 分布式MySQL数据库TDSQL架构分析
  10. 周鸿祎对企业的深刻反思,太有借鉴意义了!