我正在尝试在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()
我希望注释线的长度相同(相对于图的大小),无论图形的大小或轴的缩放。
这可能吗?