Вопросы в комментариях остались без ответа, поэтому необходимо сделать некоторые предположения. Допустим, вращение должно происходить в пространстве отображения, а координаты осей совпадают с координатами оси Y. Тогда возможное преобразование может выглядеть как
trans = ax.get_xaxis_transform() + mtrans.Affine2D().rotate_deg(angle)
В этом случае первое измерение - это координаты данных, второе - координаты осей.
Пример:
import matplotlib.pyplot as plt
import matplotlib.transforms as mtrans
fig, ax = plt.subplots()
angle = 38 # degrees
trans = ax.get_xaxis_transform() + mtrans.Affine2D().rotate_deg(angle)
ax.plot([5,9],[0,0], marker="o", transform=trans)
rect = plt.Rectangle((5,0), width=4, height=0.2, alpha=0.3,
transform=trans)
ax.add_patch(rect)
ax.set(xlim=(3,10))
plt.show()
Если вместо этого вы хотите вращение вокруг точки в координатах данных, одно преобразование не выполняет эту работу. Например, для поворота около (5,5) в пространстве данных,
import matplotlib.pyplot as plt
import matplotlib.transforms as mtrans
fig, ax = plt.subplots()
ax.set(xlim=(3,10),ylim=(4,10))
fig.canvas.draw()
angle = 38 # degrees
x, y = ax.transData.transform((5,5))
_, yax = ax.transAxes.inverted().transform((0,y))
transblend = ax.get_xaxis_transform()
x, y = transblend.transform((5,yax))
trans = transblend + mtrans.Affine2D().rotate_deg_around(x,y, angle)
ax.plot([5,9],[yax,yax], marker="o", transform=trans)
rect = plt.Rectangle((5,yax), width=4, height=0.2, alpha=0.3,
transform=trans)
ax.add_patch(rect)
plt.show()
Обратите внимание, что это делает недействительным, как только вы измените пределы или размер фигуры.