Matplotlib相关热图中缺少标签

时间:2018-03-06 01:59:59

标签: python-3.x matplotlib heatmap correlation imshow

我正在使用来自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 个答案:

答案 0 :(得分:3)

要恢复标签,可以强制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)之前

这导致以下情节:

enter image description here