在Julia中使用PyPlot设置轴原点

在Julia中使用PyPlot设置轴原点,plot,axis,julia,Plot,Axis,Julia,朱莉娅对我完全陌生。我在Julia中使用PyPlot软件包,只是试图将我的x轴和y轴原点分别设置为0和0。目前,它只是根据我正在绘制的点的值来选择原点的位置 plot(x1,y1,".") xlabel("X1") ylabel("Y1") title("First Line") grid("on") 我试过以下方法,但不起作用。 在Julia中使用PyPlot与在Python中使用matplotlib不同。您正在寻找在轴上设置限制的等效方法。我发现这可能对你有用 以下是如何将自定义限制添加到

朱莉娅对我完全陌生。我在Julia中使用PyPlot软件包,只是试图将我的x轴和y轴原点分别设置为0和0。目前,它只是根据我正在绘制的点的值来选择原点的位置

plot(x1,y1,".")
xlabel("X1")
ylabel("Y1")
title("First Line")
grid("on")
我试过以下方法,但不起作用。
在Julia中使用PyPlot与在Python中使用matplotlib不同。您正在寻找在轴上设置限制的等效方法。我发现这可能对你有用

以下是如何将自定义限制添加到y轴:

using PyPlot

x1 = rand(50, 1) .* 30 .+ 50
y1 = rand(50, 1) .* 30 .+ 100 

plot(x1, y1)

# get the current axis argument of the plot
ax = gca()

# add new limits from 0 - 100
ax[:set_ylim]([0,100])

在Julia中使用PyPlot的语法与Python有点不同。 这是因为当前无法使用obj.f访问Julia中对象obj中的方法函数f,PyPlot大量使用该函数

为了解决这个问题,Python中的obj.f被Julia中的obj[:f]替换;请注意:

因此Python中的ax.spines变得

ax[:spines]
在茱莉亚

正如另一张海报所指出的,必须首先执行ax=gca以将当前轴对象存储在变量ax中

如果你在Julia REPL或Jupyter笔记本上这样做,你会看到

julia> ax = gca()
PyObject <matplotlib.axes._subplots.AxesSubplot object at 0x31f854550>

julia> ax[:spines]
Dict{Any,Any} with 4 entries:
  "left"   => PyObject <matplotlib.spines.Spine object at 0x31f854c10>
  "bottom" => PyObject <matplotlib.spines.Spine object at 0x31f854f50>
  "right"  => PyObject <matplotlib.spines.Spine object at 0x31f854dd0>
  "top"    => PyObject <matplotlib.spines.Spine object at 0x31f86e110>

再次调用对象ax[:spines][left]内的set_position方法。另外请注意,Julia中的字符串必须有,而不是“.

如果您按照PyCall.jl文档中的语法描述,给出一个matplotlib命令以及您实际尝试过的Julia等效命令,这将非常有用。我是这里的100%初学者,不知道您在说什么。上面给出了我所做的。帮助我已经开始使用PyPlot.axis[xmin,xmax,ymin,ymax]来实现以下目标:PyPlot.plotspacerdata[:Width],spacerdata[:Curvature],。PyPlot.xlabelWidth PyPlot.ylabelCurvature PyPlot.titlePlot PyPlot.gridon PyPlot.axis[0,2,0,4]不幸的是,这似乎不起作用。我得到以下错误:LoadError:UndevarError:ax未定义您是对的!我忘了将绘图轴指定给ax。请参见上面编辑的答案。希望这将得到你想要的。你可以忘记ax,只使用ylim1100。但这并不能真正回答原来的问题。谢谢niczky12。David我尝试了你的建议,效果很好,所以我编辑了你的答案niczky12。
ax[:spines]["left"][:set_position]("zero")