我正在尝试使用 matplotlib 进行绘图,围绕 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 不支持“+”号来组合底层转换。
有谁知道如何实现这个功能吗?谢谢
最佳答案
Python 使用第一个对象的方法实现运算符重载,例如t3 = t1 + t2
相当于 t3 = t1.__add__(t2)
。
在 Julia 中,这变成了
t3 = t1[:__add__](t2)
关于matplotlib - 在 Julia 中使用 PyPlot 绕特定点旋转矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512252/