使用Julia中的PyPlot图设置轴原点

时间:2016-03-17 23:04:00

标签: plot axis julia

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

plot(x1,y1,".")
xlabel("X1")
ylabel("Y1")
title("First Line")
grid("on")

我尝试了以下但是它不起作用。 change matplotlib axis settings

2 个答案:

答案 0 :(得分:2)

在Julia中使用PyPlot与Python中的matplotlib不同。您正在寻找在轴上设置限制的Julia等效物。我发现this useful github repo可能对您有用。

以下是如何向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])

答案 1 :(得分:2)

在Julia中使用PyPlot的语法与Python略有不同。 这是因为(目前)您不能使用obj.f()来访问Julia中对象f()内的方法(函数)obj,而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]是字典。 (我之前并不知道这一点。这是进行交互式会话的好处 - 你可以问朱莉娅你需要知道什么。这被称为“内省”。)

根据原始问题中链接的Python答案,您需要在Julia中用以下内容替换Python中的ax.spines['left'].set_position('zero')

ax[:spines]["left"][:set_position]("zero")

同样,调用对象set_position内的ax[:spines]["left"]方法。另请注意,Julia中的字符串必须为",而不是'