Julia 中的 PyPlot 错误:PyObject 类型没有字段 set_yscale
PyPlot Error in Julia: type PyObject has no field 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
这是路径错误吗?如果是这样,是否有更简单的方法来使用不同的命令进行对数对数图?
提前致谢。
我觉得这应该在文档中更突出地解释,但是如果你向下滚动到 Readme for PyCall(PyPlot 使用)的底部,它会说:
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](...)
因此,正如@jverzani 提到的,在您从 PyPlot 调用任何模块级函数后 returns 一个对象,该对象是一个 PyObject 并且必须使用括号调用所有属性和方法带符号的符号。
我正在使用 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
这是路径错误吗?如果是这样,是否有更简单的方法来使用不同的命令进行对数对数图?
提前致谢。
我觉得这应该在文档中更突出地解释,但是如果你向下滚动到 Readme for PyCall(PyPlot 使用)的底部,它会说:
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](...)
因此,正如@jverzani 提到的,在您从 PyPlot 调用任何模块级函数后 returns 一个对象,该对象是一个 PyObject 并且必须使用括号调用所有属性和方法带符号的符号。