python - 如果我在制作绘图之前设置轴属性,如何旋转轴刻度标签?

标签 python matplotlib

我正在试验 seaborn,对指定轴属性有疑问。在我下面的代码中,我采用了两种方法来创建矩阵的热图并将结果放在图中的两组轴上。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

A=np.random.randn(4,4)
labels=['a','b','c','d']

fig, ax = plt.subplots(2)

sns.heatmap(ax =ax[0], data = A)
ax[0].set_xticks(range(len(labels)))
ax[0].set_xticklabels(labels,fontsize=10,rotation=45)
ax[0].set_yticks(range(len(labels)))
ax[0].set_yticklabels(labels,fontsize=10,rotation=45)


ax[1].set_xticks(range(len(labels)))
ax[1].set_xticklabels(labels,fontsize=10,rotation=45)
ax[1].set_yticks(range(len(labels)))
ax[1].set_yticklabels(labels,fontsize=10,rotation=45)
sns.heatmap(ax =ax[1], data = A,xticklabels=labels, yticklabels=labels)
plt.show() 

结果图如下所示:

enter image description here

通常,我总是采用第一种方法创建热图,然后指定轴属性。然而,在创建动画(嵌入到 tkinter Canvas 上)时,这是我最终感兴趣的事情,我发现更新函数中的这种排序会导致轴标签“闪烁”。第二种方法将消除这种影响,并且它还将刻度线沿轴放在正方形内的中心。

但是,第二种方法不会按需要旋转 y 轴刻度标签。有没有简单的解决方法?

最佳答案

我不确定这就是您要找的。看起来您在更改 yticklabels 后创建了 figure。所以 figure 正在覆盖你的 yticklabels

下面将解决您的问题。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

A=np.random.randn(4,4)
labels=['a','b','c','d']

fig, ax = plt.subplots(2)

sns.heatmap(ax =ax[0], data = A)
ax[0].set_xticks(range(len(labels)))
ax[0].set_xticklabels(labels,fontsize=10,rotation=45)
ax[0].set_yticks(range(len(labels)))
ax[0].set_yticklabels(labels,fontsize=10,rotation=45)


ax[1].set_xticks(range(len(labels)))
ax[1].set_xticklabels(labels,fontsize=10,rotation=45)
ax[1].set_yticks(range(len(labels)))
sns.heatmap(ax =ax[1], data = A,xticklabels=labels, yticklabels=labels)
ax[1].set_yticklabels(labels,fontsize=10,rotation=45)

plt.show() 

enter image description here

关于python - 如果我在制作绘图之前设置轴属性,如何旋转轴刻度标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70088890/

相关文章:

python - 如何在 Python 中发出警报声?

python - 词典理解查询

python - 如何更新 matplotlib 中 imshow 的范围?

python - [matplotlib] : write dates on x axis

numpy - 从 matplotlib 图形中删除边距

python - 在 wx 中使用 matplotlib 显示 numpy 数组

python - 如何在同一台服务器上使用多个 python 虚拟环境

python - 复制 Jupyter Notebook Pandas 数据框 HTML 打印输出

python - jupyter notebook 无法识别 tensorflow

python - matplotlib 曲面图隐藏了应该在前面的散点