Я пытаюсь выяснить, как повернуть текст в matplotlib, чтобы выровнять его по кривой на графике, но я не понял, какие преобразования дают правильную систему координат для поворота текста, чтобы соответствовать определенному наклону в координатах данных. Вот минимальный пример рисования линии и попытки выровнять текст вдоль нее:
# Make some really non-square figure
plt.figure(figsize=(2,5))
# Draw some line between two points
pB=np.array((0,0))
pA=np.array((1,2))
pC=(pA+pB)/2
plt.plot(*zip(pA,pB))
# All the transforms at our disposal
tD=plt.gca().transData
tA=plt.gca().transAxes
tF=plt.gcf().transFigure
# Transform the endpoints of the line two some coordinate system
pA,pB=[
##### What goes here???
p # <- trivial no transform
#tD.transform(p)
#tA.inverted().transform(tD.transform(p))
#tF.inverted().transform(tD.transform(p))
for p in (pA,pB)]
# Then calculate the angle of the line
rise,run=pA-pB
rot=(180/np.pi)*np.arctan(rise/run)
# Draw some text at that angle
plt.text(pC[0],pC[1],'hi there',rotation=rot,
horizontalalignment='center',verticalalignment='bottom');
Независимо от того, что я пытаюсь, текст по-прежнему дезориентирован:
[это изображение для случая без преобразования выше, представленного с помощью опции %matplotlib inline
в записной книжке Jupyter.]