又发现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)
好了,大概先这样,其他的以后再学习。
网友评论