热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

结合seaborn的两张热图

如何解决《结合seaborn的两张热图》经验,为你挑选了1个好方法。

我有2个数据表的尺寸4x25.每个表都来自不同的时间点,但具有完全相同的元数据,实质​​上是相同的列和行标题.

鉴于列数很多,我认为最好heatmap使用seaborn库来表示Python.但是,我需要在同一个图中包含两个表.我能够创建一个表示单个数据表的热图.

df = pd.DataFrame(raw_data)
ax = sns.heatmap(df)
ax.set(yticklabels=labels)

但是,我不确定如何将两个数据表组合到同一个热图中.我能想到的唯一的办法是只创建一个新的DataFrame维度4x50,然后两个表放入一个和情节,使用热图.但是,我需要帮助解决以下问题:

    我不确定如何在热图的中间画一条线来区分2个表中的数据.读者看到列开始重复的位置以实现新数据的开始位置是令人讨厌的.

    一个更好的解决办法是申请2组数据的2个不同的着色方案相同的热图,而不是只是简单地画线拦腰.

对上述问题的任何帮助都会非常有帮助.

注意:我并不像上面提到的那样,甚至不使用热图来表示数据.如果还有其他绘图建议,请告诉我.



1> ImportanceOf..:

在图中并排显示两个seaborn热图的一种可能方式是将它们绘制成单独的子图.可以将子图之间的空间设置为非常小(wspace=0.01)并将相应的颜色条和标记标记定位在该间隙之外.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

df =  pd.DataFrame(np.random.rand(25,4), columns=list("ABCD"))
df2 = pd.DataFrame(np.random.rand(25,4), columns=list("WXYZ"))

fig, (ax,ax2) = plt.subplots(ncols=2)
fig.subplots_adjust(wspace=0.01)
sns.heatmap(df, cmap="rocket", ax=ax, cbar=False)
fig.colorbar(ax.collections[0], ax=ax,location="left", use_gridspec=False, pad=0.2)
sns.heatmap(df2, cmap="icefire", ax=ax2, cbar=False)
fig.colorbar(ax2.collections[0], ax=ax2,location="right", use_gridspec=False, pad=0.2)
ax2.yaxis.tick_right()
ax2.tick_params(rotation=0)
plt.show()

在此输入图像描述


推荐阅读
author-avatar
留盏灯开扇门
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有