1

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

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

4

1 回答 1

2

正如您所发现的,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,以及p210 行显示第二个函数的结果。

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

于 2021-11-17T13:23:40.757 回答