簡體   English   中英

如果在制作 plot 之前設置軸屬性,如何旋轉軸刻度標簽?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM