[英]How to rotate theta ticklabels in a matplotlib polar plot?
在 matplotlib 極坐標圖中,我想以不同的角度旋轉每個單獨的 theta 刻度標簽。 但是,我在文檔中找不到任何內容來做到這一點。 這是一個簡單的情節來說明:
from matplotlib import pyplot as plt
import numpy as np
fig = plt.figure()
ax = plt.axes(polar=True)
ax.set_thetalim(0., np.pi/4.)
ax.set_rlim(0., 2.)
# set the size of theta ticklabels (works)
thetatick_locs = np.linspace(0.,45.,4)
thetatick_labels = [u'%i\u00b0'%np.round(x) for x in thetatick_locs]
ax.set_thetagrids(thetatick_locs, thetatick_labels, fontsize=16)
這會在 0、15、30 和 45 度處添加標簽。 我想要做的是將 15 度標簽旋轉 15 度,將 30 度標簽旋轉 30 度,依此類推,使每個標簽的文本方向徑向向外。 由於get_xticklabels
實例上的PolarAxes
似乎獲得了 theta 刻度標簽,我嘗試過:
for i,t in enumerate(ax.get_xticklabels()):
t.set_rotation(thetatick_locs[i])
然而,這沒有任何作用。 有沒有其他方法可以做我想做的事? 總的來說,我發現極坐標軸的文檔不像矩形軸那樣詳盡,可能是因為使用它的人較少。 所以也許已經有辦法做到這一點。
您當前的方法適用於笛卡爾坐標,但適用於極坐標,您可以使用前面介紹的解決方法here 。 我在下面為你改編了這個答案。 您可以在設置 theta 網格后添加以下代碼
fig.canvas.draw()
labels = []
for label, angle in zip(ax.get_xticklabels(), thetatick_locs):
x,y = label.get_position()
lab = ax.text(x,y, label.get_text(), transform=label.get_transform(),
ha=label.get_ha(), va=label.get_va())
lab.set_rotation(angle)
labels.append(lab)
ax.set_xticklabels([])
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.