Matplotlib 相关热图中缺少标签

Posted

技术标签:

【中文标题】Matplotlib 相关热图中缺少标签【英文标题】:Missing labels in Matplotlib correlation heatmap 【发布时间】:2020-06-12 21:31:40 【问题描述】:

我正在使用 UCI 机器学习存储库中的 abalone dataset。我想使用 matplotlib 和 imshow 显示相关热图。

我第一次尝试,效果很好。绘制并标记了所有数值变量,请参见此处:

fig = plt.figure(figsize=(15,8))
ax1 = fig.add_subplot(111)
plt.imshow(df.corr(), cmap='hot', interpolation='nearest')
plt.colorbar()
labels = df.columns.tolist()
ax1.set_xticklabels(labels,rotation=90, fontsize=10)
ax1.set_yticklabels(labels,fontsize=10)
plt.show()

successful heatmap

后来,我在分类变量上使用了 get_dummies(),如下所示:

df = pd.get_dummies(df, columns = ['sex'])

resulting correlation matrix

所以,如果我重用之前的代码来生成漂亮的热图,应该没问题,对吧?错了!

What dumpster fire is this?

所以我的问题是,我的标签去了哪里,我该如何找回它们?!

谢谢!

【问题讨论】:

【参考方案1】:

要取回您的标签,您可以强制 matplotlib 使用足够的 xticks 以便显示所有标签。这可以通过添加来完成

ax1.set_xticks(np.arange(len(labels)))
ax1.set_yticks(np.arange(len(labels)))

在你的声明之前ax1.set_xticklabels(labels,rotation=90, fontsize=10)ax1.set_yticklabels(labels,fontsize=10)

这将导致以下情节:

【讨论】:

非常感谢!!这让我发疯了。我想我没有认真研究 set_ticks 文档。 另外,你能告诉我为什么 set_xticks 突然变得有必要了,而它在初始数据集上似乎是自动的??

以上是关于Matplotlib 相关热图中缺少标签的主要内容,如果未能解决你的问题,请参考以下文章

使用散点数据集在 MatPlotLib 中生成热图

如何在图下方居中 matplotlib 滑块并重新标记滑块标签?

从图形 matplotlib 烛台中删除缺少的日期空间和技巧标签

Seaborn 热图相关性不适合注释数字

Seaborn 热图未显示所有 xticks 和 yticks

在 matplotlib 中组合多个热图