【问题标题】:Multiple layer heatmap in seaborn?seaborn中的多层热图?
【发布时间】:2020-01-13 09:58:07
【问题描述】:

我有一个包含 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

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

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

【问题讨论】:

  • 如果您能解释一下热图应该是什么样子,将会有所帮助。选项可能是heatmap-drawing-circles-within-tiles,或matshow-but-with-triangles,或Plotting two distance matrices together on same plot?
  • 另外,如果至少两列的唯一类别数不同怎么办?
  • @ImportanceOfBeingErnest:关于唯一类别的数量,即使您停在每列的不同行,是否有可能沿着数据框向下直到数字相等?关于风格,这个stackoverflow.com/a/44293388/5016028 会很好,但我不知道如何适应我的情况,因为我真的不明白那里的代码。
  • A 列有 4 个类别,C 列有 5 个类别。我不知道那个热图应该是什么样子。但是,如果您可以创建相同形状的相应矩阵,则可以应用任何链接(即使不了解它们)。

标签: matplotlib seaborn heatmap


【解决方案1】:

此链接可能会对您有所帮助: Combine multiple heatmaps in matplotlib

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

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

pcolor(D2-D1)

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

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

pcolor(D1)
contour(D2)

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

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。

【讨论】:

    猜你喜欢
    • 2021-07-24
    • 2020-08-04
    • 2020-10-12
    • 1970-01-01
    • 2021-04-14
    • 2018-05-15
    • 2015-09-12
    • 2020-07-06
    • 2017-08-18
    相关资源
    最近更新 更多