Matplotlib julia中带有PyPlot的PathPatch对象

Matplotlib julia中带有PyPlot的PathPatch对象,matplotlib,julia,Matplotlib,Julia,我试图使用Julia的PyPlot包从matplotlib网站复制。据我所知,PyPlot本质上是matplotlib.PyPlot模块,因此我导入了所需的matplotlib的其他模块(使用@pyimport宏): 使用PyCall @pyimport matplotlib.path作为mpath @pyimport matplotlib.patches作为MPatch 然后,我继续定义路径对象: 路径=mpath.Path 但我得到: fn(带1方法的通用函数) 好像我定义了一个函数。此外,

我试图使用Julia的PyPlot包从matplotlib网站复制。据我所知,PyPlot本质上是matplotlib.PyPlot模块,因此我导入了所需的matplotlib的其他模块(使用@pyimport宏):

使用PyCall

@pyimport matplotlib.path作为mpath

@pyimport matplotlib.patches作为MPatch

然后,我继续定义路径对象:

路径=mpath.Path

但我得到:

fn(带1方法的通用函数)

好像我定义了一个函数。此外,当我分配路径_数据时,我得到以下错误:

错误:类型函数没有字段MOVETO

当然,这是由于路径,Julia尝试将其作为函数,而不是类型或类似的东西。您可能会猜到,当我尝试定义变量补丁时,也会发生同样的情况

因此,matplotlib和pyplot for Julia的模块之间存在不兼容,因为预期的对象(类型)被视为函数。如果PyPlot.jl文件不需要,则可以预期这种行为

我的问题是:

-我做错什么了吗

-有没有一个简单的方法让它工作

-你知道Julia的另一个软件包吗?在这个软件包中,我可以定义补丁,并以与matplotlib类似的方式工作

我想这样做

感谢您的想法。

您需要获取Path的“原始”Python对象。默认情况下,PyCall将Python类型的对象转换为函数(函数调用相应的构造函数),但是您不能访问类的静态成员

相反,执行例如Path=mpath.pymember(“Path”)来获取“原始”PyObject,然后可以执行Path[“MOVETO”]或Path[:MOVETO]来访问MOVETO成员


(在Julia 0.4中,一旦类似的东西被合并(这样我们就可以直接调用PyObjects),这个困难有望消失。)

感谢ansering,我明白了!只是出于好奇,你知道为什么我们使用方括号的PyObject方法吗?我认为点也是Julia中的标准(就像Python中一样)。我已经进阶了,但我在这方面遇到了困难。我定义了一个可变圆:
@pyimport matplotlib.patches作为patch
圆=patch.pymember(“圆”)
。但是当我尝试
圆[:set_radius](1.0)
时,我遇到了一个错误。我还尝试了
设置!(圆,半径,1.0)
您需要创建一个圆实例,例如
c=patch.Circle((3,4),5);c[:radius]=7