Julia中的PathPatch对象与PyPlot

时间:2014-09-23 17:23:44

标签: matplotlib julia

我尝试使用PyPlot包为Julia从matplotlib网站重现this example。据我所知,PyPlot本质上是matplotlib.pyplot模块,因此我导入了我需要的matplotlib的其他模块(使用@pyimport宏):

  

使用PyCall

     

@pyimport matplotlib.path as mpath

     

@pyimport matplotlib.patches as mpatches

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

  

Path = mpath.Path

然后我得到:

fn (generic function with 1 method)

好像我已经定义了一个函数。此外,当我分配path_data时,我收到以下错误:

  

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

当然,这是由于Path,Julia尝试将其作为一种功能而不是类型或类似的东西。正如您可能猜到的那样,当我尝试定义变量补丁时也是如此。

因此,由于预期的对象(类型)被视为函数,因此matplotlib的模块与Julia的pyplot不兼容。如果不同的话,可以预期这种行为不需要PyPlot.jl文件。

我的问题是:

- 我做错了什么?

- 有一种简单的方法可以使它有效吗?

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

我想做this kind of animations

感谢您的想法。

1 个答案:

答案 0 :(得分:1)

你需要得到" raw" Path的Python对象。默认情况下,PyCall将Python类型对象转换为函数(调用相应的构造函数),但是您无法访问该类的静态成员。

相反,例如Path = mpath.pymember(" Path")获取" raw" PyObject,然后你可以做Path [" MOVETO"]或Path [:MOVETO]来访问MOVETO成员。

(一旦像https://github.com/JuliaLang/julia/pull/8008这样的东西被合并,这个难度将在Julia 0.4中消失(这样我们就可以直接调用PyObjects了。)