Python可视化 | Seaborn包—heatmap()

…衆ロ難τιáo~ 提交于 2021-01-21 13:45:14

seaborn.heatmap()的参数

seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)

⚪ 绘制热图

uniform_data = np.random.rand(10,12) #随机创建10行12列的数组
pd.DataFrame(uniform_data) #以一个数据框的格式来显示
f,ax = plt.subplots(figsize=(9,6)) #定义一个子图宽高为9和6 ax存储的是图形放在哪个位置
ax = sns.heatmap(uniform_data,vmin = 0,vmax = 1) #vmin,vmax定义了色彩图的上下界
# sns.heatmap(uniform_data)  #此语句会默认图形的大小画热图

  

 

 ⚪ 使用发散色图绘制以0为中心得数据的热力图

uniform_data = np.random.randn(10, 12)
f, ax = plt.subplots(figsize=(9, 6))
ax = sns.heatmap(uniform_data, center=0) #参数center = 0

  

 

⚪ 以数据集 flights 为例绘图

flights = pd.read_csv('C:\\Users\\86130\\Desktop\\flights.csv')

flights = sns.load_dataset("flights") 因为XJ的网络链接不了github所以该语句不可用
网址https://github.com/mwaskom/seaborn-data直接下载数据集 👆

数据集 flights 的部分截图:

 高效的函数pivot(),该函数有三个参数(index,columns,values),第一个参数index是指新表的索引,第二个参数columns是新表的列名,第三个参数values是指新表中的值,看效果就比较明确了 👇

new_flights = flights.pivot("month","year","passengers")

new_flights的数据显示:

f,ax = plt.subplots(figsize=(9,6))
sns.heatmap(new_flights)

  

f,ax = plt.subplots(figsize=(12,9))
sns.heatmap(new_flights,annot = True,fmt = "d",linewidth =0.5,cmap = 'Blues',xticklabels = 2,yticklabels = False,cbar = False) 
#annot=True 为每个单元格写入值。
#参数fmt是指添加值的格式。这里设置为整数型
#linewidth是指划分每个单元格的行的宽度
#cmap设置热图的颜色
#xticklabels与yticklabes默认为1,即标签没有中断,若设置为False则不显示标签,
#参数cbar默认为True,即绘制颜色条

 

 ⚪ 使用不同的轴作为颜色条,直接用代码吧。

grid_kws = {"height_ratios": (.9, .05), "hspace": .3}
f, (ax, cbar_ax) = plt.subplots(2, gridspec_kw=grid_kws)
ax = sns.heatmap(new_flights, ax=ax,
                 cbar_ax=cbar_ax,
                 cbar_kws={"orientation": "horizontal"})

  

subplots函数中的参数gridspec_kw是将字典的关键字传递给GridSpec构造函数创建子图放在网格里。heatmap函数中的参数ax指绘制图的轴,否则使用当前活动的轴,cbar_ax用于绘制颜色条的轴,否则从主轴获取;cbar_kwsfig.colorbar的关键字参数.这部分不太会用大白话解释,直接上图吧 👆

 

⚪ 绘制相关系数矩阵,因为对称仅绘制一半

corr = np.corrcoef(np.random.randn(10, 200))
mask = np.zeros_like(corr)
print(mask)
mask[np.triu_indices_from(mask)] = True #把上部分设置为1
#设置为1 的单元格将不再显示
#mask[np.tril_indices_from(mask)] = True #把下部分设置为1
print(mask)
with sns.axes_style("white"):
    ax = sns.heatmap(corr, mask=mask, vmax=.3, square=True)
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [0. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [0. 0. 1. 1. 1. 1. 1. 1. 1. 1.]
 [0. 0. 0. 1. 1. 1. 1. 1. 1. 1.]
 [0. 0. 0. 0. 1. 1. 1. 1. 1. 1.]
 [0. 0. 0. 0. 0. 1. 1. 1. 1. 1.]
 [0. 0. 0. 0. 0. 0. 1. 1. 1. 1.]
 [0. 0. 0. 0. 0. 0. 0. 1. 1. 1.]
 [0. 0. 0. 0. 0. 0. 0. 0. 1. 1.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!