如何将文本添加到多个轴比例不同的matplotlib图中的同一位置?

iyfamqjs  于 2023-02-19  发布在  其他
关注(0)|答案(2)|浏览(165)

我有大约20个不同轴的图,比例范围从0-1到0-300。我想使用plt.text(x,y)在自动绘图功能中向左上角添加文本,但不断变化的轴大小不允许自动化和完全一致。
以下是两个示例图:

import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()

#Plot 2
plt.plot([2, 4, 6, 8])
plt.ylabel('some numbers')
plt.show()

我想在两个图中都使用类似plt.text(x, y, 'text', fontsize=8)的内容,但不需要手动指定每个图的xy,而只是说文本应该放在左上角,这可能吗?

jckbn6z7

jckbn6z71#

你试过ax.texttransform=ax.transAxes吗?

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.plot([1, 2, 3, 4])
ax.set_ylabel('XXX')

ax.text(0.05, 0.95, 'text', transform=ax.transAxes, fontsize=8, va='top', ha='left')

plt.show()
    • 说明**:

ax.text首先获取文本的x和y坐标,然后是指定要使用的坐标系的transform参数,以及指定文本的垂直和水平对齐方式的va和ha参数。

brqmpdu1

brqmpdu12#

ax.annotateaxes fraction坐标配合使用:

fig, axs = plt.subplots(1, 2)

axs[0].plot([0, 0.8, 1, 0.5])
axs[1].plot([10, 300, 200])

for ax in axs:
    ax.annotate('text', (0.05, 0.9), xycoords='axes fraction')
    #                                ------------------------

此处(0.05, 0.9)指的是轴长度的5%和90%,与数据无关:

相关问题