美文网首页
seaborn实例-heatmap-热力图

seaborn实例-heatmap-热力图

作者: 橘猫吃不胖 | 来源:发表于2020-05-17 12:50 被阅读0次

又发现seaborn一个好玩儿好用的图表,热力图,使用起来依然很简单,发现了新大陆啊

先来一个效果图看看

再某些场景下,使用热力图来展示,效果真是很棒,比如:

  • 显示一年的GMV
    好像不错诶,纵轴12个月,横轴31天,哇,我试试,啊哈哈

恩,选择一款适合的可视化图表,用来表现适合的数据,会有事半功倍的效果

其实Excel也是实现类似的功能,可以参考:

单纯使用matplotlib也是可以的,只是代码多一些,参考官方文档:


seaborn中,同样使用一个函数就够了

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)

数据集

df = pd.DataFrame(np.random.randint(low=1 , high=100 , size=(12,12)))
sns.heatmap(df)

这样就可以了,太方便了,哈哈

修改图表大小

ax = sns.heatmap(df)
fig = ax.get_figure()
fig.set_size_inches(8,6)

但是这里,我还有个疑问,就是纵轴的分布不是均匀的,你看0和11,感觉只有一半
但是我看官方文档上,并没有别的设置,难道是版本的问题?新版本已经优化掉了??

我把数据集换成了(4,4),来看看这个问题

ax = sns.heatmap(df , cmap='Reds')
# ax.set_yticklabels(ax.get_yticklabels()  )
# ax.invert_yaxis()
fig = ax.get_figure()
fig.set_size_inches(8,6)

这个纵轴分的不均匀哦,不好

我当前的版本是0.9,官方最新的貌似是0.10了,我先去更新一下看


恩,更新完了,重启了一下Jupyter

还是前面的数据,发现纵轴就对齐了

sns.heatmap(df)

好了,我们再看几个常用的参数

vmin、vmax
是用来控制colormap的,默认会自动生成最小值和最大值
我们也可以手动来改

sns.heatmap(df , vmin=50 , vmax=100)

类似的参数,还有center

sns.heatmap(df , center=50)

annot
有时候,我们想要显示我们具体的数字,就用到了这个参数

sns.heatmap(df , annot=True)

还可以使用fmt格式化字符串

sns.heatmap(df , annot=True ,fmt='.1%')

linewidth
指定分割线的宽度

sns.heatmap(df , linewidths=.5)

好了,大概先这样,其他的以后再学习。

相关文章

网友评论

      本文标题:seaborn实例-heatmap-热力图

      本文链接:https://www.haomeiwen.com/subject/munlohtx.html