我試圖在matplotlib中創建一組Axes.annotate()
。我希望這些註釋偏離點(類似於textcoords='offset pixels'
),但在‘axes fraction’
而不是絕對像素數。註釋點偏移軸的大小的一個固定分數
使用數據座標的問題是,當使用對數(或其他)尺度時,它會變得雜亂。
offset pixels
的問題在於,如果更改圖形的大小或dpi,外觀會發生變化。
下面是概括的問題的嘗試:
fig, axs = plt.subplots(1,2)
axs[0].plot([1,2],[10,100])
axs[1].semilogy([1,2],[10,100])
for ax in axs:
ax.annotate('', xy=(1,10), xytext=(1,50), textcoords=('data', 'offset pixels'),arrowprops={'arrowstyle':'-', 'lw':3})
plt.show()
fig, axs = plt.subplots(1,2, dpi=200)
axs[0].plot([1,2],[10,100])
axs[1].semilogy([1,2],[10,100])
for ax in axs:
ax.annotate('', xy=(1,10), xytext=(1,50), textcoords=('data', 'offset pixels'),arrowprops={'arrowstyle':'-', 'lw':3})
plt.show()
我想有註解行具有相同的長度(相對於圖的大小),不管圖形的大小,還是軸的縮放比例。
這可能嗎?
使用「軸分數」作爲你沒有指定的行的端部的,所述y座標應爲座標軸的高度,這是不一樣的20%之說的長度該線應該是20%高,還是我誤解了? –