Я хотел бы иметь что-то вроде «размерной линии» - горизонтальную линию со стрелками на каждом конце и текстом в середине.
Я придумал этот пример:
#!/usr/bin/env python3
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0,100)
y = 2*x+1
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x,y)
ax1.axhline(y=1, color='gray', linestyle='-', linewidth=0.5)
yannot=1.0
aaline = ax1.annotate("X1",
xy=(0, yannot), xycoords=('data', 'axes fraction'),
xytext=(100, yannot), textcoords=('data', 'axes fraction'),
verticalalignment = "bottom",
arrowprops=dict(
arrowstyle="<->", color="Red", shrinkA=0, shrinkB=0,
),
)
plt.show()
Я попытался указать x в координатах данных, а y в долях осей, чтобы линия сохраняла увеличение;однако, это то, что я получаю в начале:
![matplotlib-1](https://i.stack.imgur.com/l1f9b.png)
Как вы можете видеть - даже если я попытался указать координату y начала и концаточки линии аннотации должны быть одинаковыми - эта (красная) линия не является прямой горизонтальной! Возможно, это связано с тем, что у аннотации есть не только начальная и конечная точки, но и аннотируемая точка, а также местоположение аннотированного текста, а также размер / заполнение текстовой метки. в конечном итоге в вычислениях в другой из конечных точек.
Тем не менее, что я могу использовать, чтобы получить правильную параллельную линию со стрелками, так что текст метки центрируется в середине?
О постоянном увеличении - это то, что я получаю после увеличения:
![matplotlib-2](https://i.stack.imgur.com/zDddN.png)
Это в основном то, что я хочу - нарисованные стрелки показаны,Однако мне бы хотелось, чтобы линия аннотации была обрезана по графику, а метка «X1» была размещена в центре показанной линии независимо от показанного уровня масштабирования. Есть ли способ достичь этого?