[英]How can I rotate axis tickmark labels if I set axis properties before making my plot?
我正在試驗 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()
結果圖如下所示:
通常,我總是采用第一種方法來創建熱圖,然后指定軸屬性。 但是,在創建 animation(嵌入在 tkinter 畫布上)時,這是我最終感興趣的,我在更新 function 中發現了這樣的排序導致“軸閃爍”。 第二種方法將消除這種影響,並且它還使刻度線在沿軸的正方形內居中。
但是,第二種方法不會根據需要旋轉 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.