有什么方法可以将我的seaborn heatmap的colormap值与其y轴值交换?

时间:2019-05-11 22:50:54

标签: python python-2.7 matplotlib seaborn heatmap

我是新来的热点地图和Seaborn。我已经尝试了好几天了,但是还没有找到解决方案或任何相关线程。我认为我没有正确设置问题,但想知道我想做的事是否可以通过seaborn heatmaps实现……或者heatmaps是否不适合我要显示的图形。

我有一个.csv分数文件。看起来像这样:

JOIN

正如我上面显示的那样,各列的长度不同。假设Genus的长度(值的个数)为10,Pariaconus的长度为15,Trioza为20,非成员的长度为18,000。

此外,列和行彼此不相关。每个分数都是单独的,仅属于列组。我想在热图中显示的是每列中出现的分数范围。

理想情况下,我想使用热图表示数据,其中:

  • X轴是“属”,“ Pariaconus”,“ Trioza”,“非成员”。
  • Y轴为 数据集中出现的分数范围。在上面的示例中, Y轴值将从-40到-500。
  • 颜色栏是 得分中的归一化人口 Y轴。例如,如果“属”列的100%得分在 -40,则Y轴上的区域将变为红色(对于1.0)。 Genus的y轴的其余部分将显示为蓝色(表示0.0), 因为Genus的分数都没有在-50到-500之间。为了 我的项目目的,我想证明大部分分数 的“属”在某个范围内,“ Pariaconus”在另一个范围内, 另一个范围中的“非成员”,依此类推。

之所以要用热图而不是线图来表示,是因为线图会暗示同一列中的行之间存在趋势。在上面的示例(“属”列)中,当您沿X轴向下移动时,折线图/散点图似乎表明分数-40,-41和-45之间存在关联。相反,我只想在每一列中显示分数范围。

使用上面.csv格式的数据,现在我具有以下热图:https://imgur.com/a/VwgQwfQ

我通过以下代码行获得了这个

Items.id

在此热图中,Y轴的值自动设置为.csv文件中的行索引,而颜色图的值是得分(行的值)。

如果我能弄清楚如何交换颜色图和Y轴,那么我希望接下来可以弄清楚如何对每列的总体进行归一化,而不是将其作为原始索引:0到18000。但是我已经尝试了好几天了,而且还没有达到我想要的水平。

理想情况下,我想要这样的东西:https://imgur.com/a/3A0eaOD。当然,在热图中,会有渐变而不是纯色。

如果有人可以回答,我有以下问题:

  1. 这是我要实现的目标/这是我可以做到的事情 热点图?还是应该使用其他表示形式?
  2. 输入数据的表示方式是否可能有问题?如果是这样,构建这样的热图时正确的表示是什么?

任何其他指导将不胜感激。预先感谢。

0 个答案:

没有答案