2017-01-23 40 views
0

我想在極投影matplotlib ax對象的某些註釋中添加註釋。大部分註釋都很長(40 +/- 3個字符)。
有沒有辦法在極座標投影上對這些較長的註釋進行更多的控制?通過更多的控制,我的意思是更接近線路。Matplotlib註釋在極座標圖上不合適

# This annotation works alright 
fig = plt.figure() 
ax = plt.subplot(111, projection="polar") 
ax.axvline(x=np.pi/3, color="black", alpha=0.618) 
ax.annotate("this ok", xy=[np.pi/3,0.75], rotation=np.rad2deg(np.pi/3)) 

# This one doesn't work 
fig = plt.figure() 
ax = plt.subplot(111, projection="polar") 
ax.axvline(x=np.pi/3, color="black", alpha=0.618) 
ax.annotate("this doesn't work b/c it's pretty long", xy=[np.pi/3,0.75], rotation=np.rad2deg(np.pi/3)) 

enter image description here

回答

1

的問題是,標註文本旋轉設置字體大小小。因此圍繞整個文本的矩形的左上角(稱爲邊界框)遠離文本。然而,此左上角是默認座標爲參數ax.annotate()所指定座標的點。這可以在下面的左圖中看到。

解決方案是使用周圍矩形的左下角點,並將其移動到靠近原點的位置。使用左下角可以通過指定ha="left"(水平對齊),va="bottom"來完成。

ax2.annotate("this does work b/c we specifiy alignment", 
      xy=[0,0.07], rotation=np.rad2deg(np.pi/3), 
      ha="left", va="bottom") 

enter image description here

0

嘗試,使其適合

SIZE = 8 
MED_SIZE = 10 
BIG_SIZE = 12 
plt.rc('axes',titlesize=SIZE) #fontsize of the axes titles is set to 8