Я пытаюсь рисовать и поворачивать прямоугольник вокруг определенной точки в Julia, используя matplotlib для построения графика. Однако мне кажется, что мне нужно объединить два преобразования, чтобы сделать эту работу, и я не знаю, как это сделать.Поворот прямоугольника вокруг определенной точки с использованием PyPlot в Julia
using PyPlot
using PyCall
@pyimport matplotlib.patches as patches
@pyimport matplotlib as mpl
fig = figure(1)
ax = gca()
axis([-4,4,-4,4])
# specify non-rotated rectangle
length = 4
width = 2
rect = patches.Rectangle([1,1],length,width,color="blue",alpha=0.3)
rect_rotated = patches.Rectangle([1,1],length,width,color="red",alpha=0.3)
# rotate about the following point
point = [3,2]
# try to rotate rectangle using matplotlib's transformations
t1 = mpl.transforms[:Affine2D]()
t1[:rotate_deg_around](point[1],point[2], -30)
# apparently one also has to transform between data coordinate system and display coordinate system
t2 = ax[:transData]
То, что я хотел бы сделать сейчас, чтобы объединить преобразования:
t3 = t1 + t2
rect_rotated[:set_transform](t3)
ax[:add_patch](rect)
ax[:add_patch](rect_rotated)
Однако я получаю следующую ошибку
ERROR: LoadError: MethodError: no method matching +(::PyCall.PyObject, ::PyCall.PyObject)
, который я считаю из-за PyPlot -Wrapper, который не поддерживает знак «+», чтобы комбинировать базовые преобразования.
Кто-нибудь знает, как сделать эту работу? Спасибо
ли + определяется в matplotlib? На объектах преобразования? Если да, можете ли вы вызвать метод __add__? –
@ DavidP.Sanders Да, в matplotlib вы можете комбинировать преобразования с +. Однако я не могу найти соответствующую надстройку в документации. – miga89