首页 > 解决方案 > seaborn中的多层热图?

问题描述

我有一个包含 3 列的数据框。每列都包含一些“标签”。我想研究三列标签之间的对应关系。因此,我为每对列创建了 3 个热图,显示一对标签出现的次数。

例如:

colA  | colB  | colC

dog     car     USA
cat     plane   Germany
fish    truck   Spain
eagle   bike    France
dog     car     USA
eagle   train   UK

上面前两列的热图是:

dog      2     0     0     0     0
cat      0     1     0     0     0
fish     0     0     1     0     0
eagle    0     0     0     1     1
        car  plane truck bike train

现在,以同样的方式,我可以创建另外两个热图。我的问题是,我可以将其中两个(例如保持水平轴相同并为其他两列添加两个垂直轴)创建一个包含整个三元组对应关系的热图吗?

抱歉,如果我的问题似乎有点含糊,但我想看看是否有办法以热图的样式可视化三向对应关系。

标签: matplotlibseabornheatmap

解决方案


此链接可能对您有所帮助: 在 matplotlib 中组合多个热图

来自上述链接的答案之一:有几个选项可以同时呈现 2 个数据集:

选项 1 - 绘制 2 个数据集差异的热图(或比率,在您的情况下更合适)

pcolor(D2-D1)

然后展示其中几个比较数字。

选项 2 - 将 1 个数据集显示为 pcolor,将另一个数据集显示为 countour:

pcolor(D1)
contour(D2)

如果你真的需要同时显示 N>2 个数据集,我会选择轮廓或轮廓:

contourf(D1,cmap='Blues')
contourf(D2,cmap='Reds', alpha=0.66)
contourf(D2,cmap='Reds', alpha=0.33)

3 个 contourf 命令的示例输出

或者

contour(D1,cmap='Blues')
contour(D2,cmap='Reds')
contour(D2,cmap='Reds')

3 个轮廓命令的示例输出

不幸的是,类似的 alpha 技巧不适用于 pcolor。


推荐阅读