Короткий ответ: вам нужно изменить пределы оси перед выполнением преобразований. Кроме того, вы поворачиваете вокруг точки на холсте, которая была в положении (1,1)
(верхний правый угол), прежде чем устанавливать пределы для чего-то другого.
Лучший ответ на самом деле следующий: для того, чтобы вращаться вокруг точки в координатах данных, нельзя использовать отображаемые координаты для определения центра вращения, но точно данные сами по себе.
Поэтому вместо того, чтобы сначала преобразовывать в отображение координат и затем вращать, сначала нужно повернуть, а затем преобразовать в отображаемые координаты
ts = ax1.transData
coords = [1,1]
tr = matplotlib.transforms.Affine2D().rotate_deg_around(coords[0],coords[1], 10)
t = tr + ts
Полный код (где не имеет значения, установлены ли и где установлены ограничения по оси, и которые не зависят от изменения размера изображения и т. Д.):
import matplotlib.pyplot as plt
import matplotlib
f,(ax1) = plt.subplots(1,1,figsize=(3,3))
f.subplots_adjust(hspace=0,wspace=0)
ts = ax1.transData
coords = [1,1]
tr = matplotlib.transforms.Affine2D().rotate_deg_around(coords[0],coords[1], 10)
t = tr + ts
rec0 = matplotlib.patches.Rectangle((1,1),3,2,linewidth=1,edgecolor='r',facecolor='none')
ax1.add_patch(rec0)
#Rotated rectangle patch
rect1 = matplotlib.patches.Rectangle((1,1),3,2,linewidth=1,edgecolor='b',facecolor='none',transform=t)
ax1.add_patch(rect1)
# Rectangles lower left corner
plt.plot([1], [1], marker='o', markersize=3, color="green")
plt.grid(True)
ax1.set_xlim(0,6)
ax1.set_ylim(-1,4)
plt.show()