gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:08:04 30 4
gpt4 key购买 nike

我正在试验 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com