![88b03542c97929cddad31e8ad114215b.png](https://i-blog.csdnimg.cn/blog_migrate/ba58bedfee953103e35777da51414938.jpeg)
热力图(heatmap)可通过颜色深浅变化,优雅的展示数据的差异。
详细介绍 python seaborn绘制热图
本文速览
欢迎随缘关注@pythonic生物人
![98e8f0b302aad2c67e742468acbd2b06.png](https://i-blog.csdnimg.cn/blog_migrate/0f92fb1a50e4bc230b258e38c192d98c.jpeg)
![c3e8336b800aef6ab7d70b116d6c168a.png](https://i-blog.csdnimg.cn/blog_migrate/56208444d3f4db36b4fd2b54b5318c89.jpeg)
![8108c0c4193d4c54eb18719ac56289f5.png](https://i-blog.csdnimg.cn/blog_migrate/8f90499cb90ef2114a98dc9d8fefe918.png)
![dacedbf762a67b7053b7e1cfb2c204b2.png](https://i-blog.csdnimg.cn/blog_migrate/5a5a784676d50cd69d2d3890250902db.jpeg)
本文您将了解到什么?
1、matplotlib绘制热图 2、seaborn绘制热图
2.0 数据集准备
2.1 seaborn绘制heatmap
2.1.1 seaborn默认参数绘制hetmap
2.1.2 colorbar(图例)范围修改:vmin、vmax
2.1.3 修改热图颜色盘(colormap):cmp
使用matplotlib中colormap
使用Seaborn颜色盘
使用palettable库中颜色盘
2.1.4 修改图例中心数据值大小:center
2.1.5 热图中文本开关:annot
2.1.6 格子中数据的格式化输出:fmt
2.1.7 格子中数据(字体大小、磅值、颜色)等设置:annot_kws
2.1.8 格子外框宽度、颜色设置:linewidths、linecolor
2.1.9 图例开关:cbar
2.1.10 图例位置、名称、标签等设置:cbar_kws
2.1.11 热图中只显示部分符合条件的数据:mask
2.1.12 自定义x轴、y轴标签:xticklabels、yticklabels
1、matplotlib绘制热图
matplotlib可通过以下两种方法绘制heamap;
- matplotlib.axes.Axes.imshow
- matplotlib.pyplot.imshow
原始效果图,挺丑陋的;
![8fbfbb76ca53791cd4e22ebfabfb6b1c.png](https://i-blog.csdnimg.cn/blog_migrate/4e931936f954e0b2b76e908ff4cde210.jpeg)
改进后效果图(虽然要写很多辅助函数实现,但是可以很好的实现自定义热图,需要高度个性化的小伙伴可以去摸索);
![6d78edda14a73c23f70f1e54fd628748.png](https://i-blog.csdnimg.cn/blog_migrate/b2bfbc6ac4777fff48ff35f7e0dc4c60.jpeg)
![7de73f1ff9c08de353feb78d789e3935.png](https://i-blog.csdnimg.cn/blog_migrate/7797e53e56afd40b06912a233cd77df8.jpeg)
2、seaborn绘制热图
seaborn在matplotlib的基础上封装了个seaborn.heatmap,非常傻瓜式操作,我等调包侠的福音,效果可以赶得上R语言了,不逼逼,下面上干货:
2.0 数据集准备
使用鸢尾花iris数据集,数据集详细介绍请戳:鸢尾花iris数据集;
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import seaborn as sns
import palettable#python颜色库
from sklearn import datasets
plt.rcParams['font.sans-serif']=['SimHei'] # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False # 用于显示中文
iris=datasets.load_iris()
x, y