簡體   English   中英

如何在 matplotlib 極坐標圖中旋轉 theta 刻度標簽?

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

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