我在Julia编程但使用PyPloy库。我想用log 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
这是路径错误吗?如果是这样,是否有更简单的方法来使用不同的命令进行对数日志?
提前致谢。
答案 0 :(得分:2)
我觉得这应该在文档中更突出地解释,但是如果你向下滚动到Readme for PyCall(PyPlot使用的)的底部,它会说:
重要:与Python最大的区别在于,使用o [:attribute]而不是o.attribute访问对象属性/成员,因此Python中的o.method(...)是替换为o [:method](...)
因此,正如@jverzani所提到的,在从PyPlot调用任何返回对象的模块级函数之后,该对象是PyObject,并且必须使用带符号的括号表示法调用所有属性和方法。 / p>