在 Seaborn 热图中保留一些刻度

Posted

技术标签:

【中文标题】在 Seaborn 热图中保留一些刻度【英文标题】:Keeping some ticks in Seaborn heatmap plot 【发布时间】:2021-04-17 15:28:55 【问题描述】:

我有这个数据框:

Position    FLK
75.38   1.653608512
75.45   2.404366644
75.47   4.281285701
75.48   5.457803236
75.56   4.281285701
75.61   3.348777004
75.63   5.457803236
75.67   4.281285701
75.70   2.863168526
75.74   2.404366644
75.75   2.863168526
75.78   2.863168526
75.93   3.348777004
75.96   2.863168526
75.99   2.863168526
76.07   0.167253206
76.11   2.863168526
76.14   2.863168526

我使用这个脚本在 Seaborn 中绘制热图:

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import numpy as np
df = pd.read_csv("D.txt",delimiter=r"\s+",header=0)
df.set_index('Position')
FLK=(df[['FLK']]).T
sns.heatmap(FLK)
plt.show()

然后得到这个数字:

我想知道如何在此图中保留一些 x-ticks (0,2,3,4,5,6,12,15),如下所示:

【问题讨论】:

【参考方案1】:

您可以使用plt.ticks 选择某些刻度位置。创建此热图的方式是在位置0.5, 1.5, 2.5, .... 处生成带有名称'0', '1', '2', ... 的文本标签的x 个刻度。因此,您可以通过plt.xticks(np.array([0, 2, 3, 4, 5, 6, 12, 15]) + 0.5)选择部分报价。

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

df = pd.DataFrame('FLK': np.random.uniform(0, 5, 18))
FLK = (df[['FLK']]).T
sns.heatmap(FLK)
plt.xticks(np.array([0, 2, 3, 4, 5, 6, 12, 15]) + 0.5)
plt.tight_layout()
plt.show()

PS:注意df.set_index('Position')要么需要重新赋值给df,要么需要参数inplace=True才能发挥作用。在这种情况下,标签将是这些索引,您可以为其选择具有相同plt.xticks(np.array([0, 2, 3, 4, 5, 6, 12, 15]) + 0.5) 的子集。

【讨论】:

太棒了。我也很恼火,为什么他们的蜱虫不会出现。 +0.5 似乎至关重要。 seaborns 似乎忽略了不正确的蜱虫(我想要的是这个)

以上是关于在 Seaborn 热图中保留一些刻度的主要内容,如果未能解决你的问题,请参考以下文章

seaborn 热图的人工刻度标签

使用 Seaborn 和 Matplotlib 在热图和线图的共享子图中对齐 x 轴刻度

更改 seaborn 热图颜色条上的刻度大小

如何修复 matplotlib 和 seaborn 热图?

Seaborn热图顶行和底行被部分截断[重复]

更改 seaborn 热图中的某些方块