Julia中的PyPlot错误:类型PyObject没有字段set_yscale [英] PyPlot Error in Julia: type PyObject has no field set_yscale

查看:84
本文介绍了Julia中的PyPlot错误:类型PyObject没有字段set_yscale的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Julia进行编程,但使用的是PyPloy库.我想绘制一个对数y轴的直方图.但是当我使用以下代码时:

using PyPlot
List = [rand() for i = 1:100]
plt.hist(List)
plt.gca().set_yscale("log")

我收到以下错误:

type PyObject has no field set_yscale
while loading In[45], in expression starting on line 3

 in getindex at /home/rm/.julia/v0.4/PyCall/src/PyCall.jl:642
 in pysequence_query at /home/rm/.julia/v0.4/PyCall/src/conversions.jl:743
 in pytype_query at /home/rm/.julia/v0.4/PyCall/src/conversions.jl:759
 in convert at /home/rm/.julia/v0.4/PyCall/src/conversions.jl:808
 in pycall at /home/rm/.julia/v0.4/PyCall/src/PyCall.jl:812
 in fn at /home/rm/.julia/v0.4/PyCall/src/conversions.jl:181
 in close_queued_figs at /home/rm/.julia/v0.4/PyPlot/src/PyPlot.jl:295

这是路径错误吗?如果是这样,有没有更简单的方法可以使用其他命令进行对数图?

谢谢.

解决方案

我觉得应该在文档中更突出地说明这一点,但是如果您向下滚动到

I get the following error:

type PyObject has no field set_yscale
while loading In[45], in expression starting on line 3

 in getindex at /home/rm/.julia/v0.4/PyCall/src/PyCall.jl:642
 in pysequence_query at /home/rm/.julia/v0.4/PyCall/src/conversions.jl:743
 in pytype_query at /home/rm/.julia/v0.4/PyCall/src/conversions.jl:759
 in convert at /home/rm/.julia/v0.4/PyCall/src/conversions.jl:808
 in pycall at /home/rm/.julia/v0.4/PyCall/src/PyCall.jl:812
 in fn at /home/rm/.julia/v0.4/PyCall/src/conversions.jl:181
 in close_queued_figs at /home/rm/.julia/v0.4/PyPlot/src/PyPlot.jl:295

Is this a path error? If so, is there a simpler way to do a log-log plot with a different command?

Thanks in advance.

解决方案

I feel like this should be more prominently explained in the documentation, but if you scroll down to the bottom of the Readme for PyCall (which PyPlot uses) it says:

Important: The biggest difference from Python is that object attributes/members are accessed with o[:attribute] rather than o.attribute, so that o.method(...) in Python is replaced by o[:method](...)

So, as @jverzani mentioned, after you call any module-level function from PyPlot that returns an object, that object is a PyObject and all of the attributes and methods have to be called using the bracket notation with a symbol.

这篇关于Julia中的PyPlot错误:类型PyObject没有字段set_yscale的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆