同一图朱莉娅上的多个图

new*_*his 4 julia plots.jl julia-plots

我正在编写一个 Julia 程序,它迭代地运行另一个函数,并给出两组结果。我想绘制这些结果,现在我正在做的是for分别绘制每个循环的结果,这为下面的示例提供了大约 20 个图:这样说:

for i in 1:10
    x1,y1 = first_function(a,b,c)
    plot(x1,y1)
end
for j in 1:10
    x2,y2 = second_function(a,b,c)
    plot(x2,y2)
end

Run Code Online (Sandbox Code Playgroud)

我尝试使用该plot!()命令,但这给了我在同一个图上的所有 20 个图,这是我不想要的。我想做的是将每次迭代的两个函数的结果绘制在同一个图上。例如,我想要 10 个图,每次迭代一个,其中每个图都有 和 的first_function()结果second_function。我尝试了以下方法:

for j in 1:10
    x1,y1 = first_function(a,b,c)
    x2,y2 = second_function(a,b,c)
    plot!(x1,y1)
    plot!(x2,y2)
end
Run Code Online (Sandbox Code Playgroud)

然而,这似乎也不起作用。

编辑:根据我收到的答案,我发现以下方法可以解决问题:

for i in 1:10
    x1,y1 = first_function(a,b,c)
    x2,y2 = second_function(a,b,c)
    plot(x1,y1)
    plot!(x2,y2)
end
Run Code Online (Sandbox Code Playgroud)

这会在循环的每次迭代结束时生成一个新的图,这就是我想要的。

Nil*_*dat 5

正如您所发现的,plot()创建一个新绘图,同时plot!()绘图到当前活动的绘图上。

您需要做的就是明确说明您何时想要做什么,以及如果您正在使用,plot!()还明确说明您想要绘制到哪个绘图对象。所以像这样:

p1 = plot()
p2 = plot()

for i in 1:10
    plot!(p1, first_function(a, b, c)...)
    plot!(p2, second_function(a, b, c)...)
end
Run Code Online (Sandbox Code Playgroud)

那么p1应该有 10 行显示 的结果first_function,并p2有 10 行显示第二个函数的结果。

我不清楚您是否希望这两个图出现在同一个图形上,但如果您这样做,plot(p1, p2)则会创建一个带有两个子图的图形。