Drehen Sie das Rechteck mit PyPlot in Julia um einen bestimmten Punkt
Ich versuche, ein Rechteck mit matplotlib zum Plotten um einen bestimmten Punkt in Julia zu zeichnen und zu drehen. Es scheint jedoch, dass ich zwei Transformationen kombinieren muss, damit das funktioniert, was ich nicht kann.
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]
Was ich jetzt tun möchte, um die Transformationen zu kombinieren:
t3 = t1 + t2
rect_rotated[:set_transform](t3)
ax[:add_patch](rect)
ax[:add_patch](rect_rotated)
Ich erhalte jedoch den folgenden Fehler
FEHLER: LoadError: MethodError: Keine Methodenübereinstimmung + (:: PyCall.PyObject, :: PyCall.PyObject)
Ich glaube, das liegt an dem PyPlot-Wrapper, der das "+" - Zeichen nicht unterstützt, um die zugrunde liegenden Transformationen zu kombinieren.
Weiß jemand, wie man diese Arbeit macht? Vielen Dank
Python implementiert das Überladen von Operatoren mithilfe der Methoden des ersten Objekts, z . B. t3 = t1 + t2
entspricht t3 = t1.__add__(t2)
.
In Julia wird dies t3 = t1[:__add__](t2)