如何用`for`生成一系列情节

时间:2018-08-05 09:29:23

标签: julia

我学会了用Julia语言编程。

我想测试哪种颜色更好,所以我使用以下代码:

using Plots
x = 1:10; y = rand(10,2);
for i in [0 0.1 0.2]
    plot(x,y, seriestype=:scatter,background_color=RGB(0.4,0.8,i))
end

如何,什么都没显示。

有人可以告诉我如何使用loop生成图吗?

P.S。

我尝试了另一种方式,

[plot(x,y, seriestype=:scatter,background_color=RGB(0.4,0.8,i)) for i in 0:0.1:1]

以上代码没有任何反应。

以下代码也不起作用:

map(i->plot(x,y, seriestype=:scatter,background_color=RGB(0.4,0.8,i)), [0 0.1 0.2])

1 个答案:

答案 0 :(得分:2)

除非您使用display函数显示脚本,否则不会显示脚本中的情节(请参见{em>此处的脚本中的脚本部分http://docs.juliaplots.org/latest/tutorial/)。

您在这里有几种选择。这是最简单的:

for i in [0 0.1 0.2]
    display(plot(x,y, seriestype=:scatter,background_color=RGB(0.4,0.8,i)))
    sleep(1)
end

它将按顺序绘制图形。我使用sleep(1)使Julia在绘图之间暂停。

否则,您可以这样做:

p = [plot(x,y, seriestype=:scatter,background_color=RGB(0.4,0.8,i)) for i in 0:0.1:1]

然后像这样从Julia REPL绘制图形:

julia> p[5]

将绘制第五个数字。现在,您不必使用display,因为在REPL中无论如何我都会在行末使用;来调用它。您可以编写display(p[5])以获得相同的效果。

最后,您可以考虑将图形保存到PNG文件中,然后再进行检查。您可以使用上面定义的p数组来做到这一点:

foreach(i -> savefig(p[i], "fig$i.png"), eachindex(p))

或类似这样的循环:

for i in [0 0.1 0.2]
    p = plot(x,y, seriestype=:scatter,background_color=RGB(0.4,0.8,i))
    savefig(p, "fig$i.png)
end