同一个图 julia 上的多个图

Multiple plots on the same figure julia

我正在编写一个 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

我尝试改用 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

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

编辑:根据我收到的答复,我发现以下内容可以解决问题:

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

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

如您所知,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

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

我不清楚你是否希望这两个图出现在同一张图上,但如果你这样做,plot(p1, p2) 将创建一个包含两个子图的图。