Loops 在gnuplot中可以在multiplot内部使用do循环吗?
我需要创建一个具有多个子图的图形,而在每个子图中,我需要绘制多条线。每一行必须有不同的颜色。(如果每30-40行迭代一次颜色,我认为可以) 例如:(我想要8个子地块) 对于第一个子批次,我可以执行以下操作Loops 在gnuplot中可以在multiplot内部使用do循环吗?,loops,colors,gnuplot,Loops,Colors,Gnuplot,我需要创建一个具有多个子图的图形,而在每个子图中,我需要绘制多条线。每一行必须有不同的颜色。(如果每30-40行迭代一次颜色,我认为可以) 例如:(我想要8个子地块) 对于第一个子批次,我可以执行以下操作 plot for [i=2:101] 'mydata.txt' u 1:i w line notitle lw 2 这将在第一个子地块内绘制100条线 plot for [i=1022:201] 'mydata.txt' u 1:i w line notitle lw 2 在第二个面板中添
plot for [i=2:101] 'mydata.txt' u 1:i w line notitle lw 2
这将在第一个子地块内绘制100条线
plot for [i=1022:201] 'mydata.txt' u 1:i w line notitle lw 2
在第二个面板中添加另一组线等
此解决方案的问题在于,子地块中的每一条单独的线不仅具有不同的颜色,而且具有不同的线样式,有些是实体线,有些是虚线,每个都具有不同的虚线图案等。
是否有办法使用独特的线条样式,例如所有连续线条和不同颜色?
在过去,我发现了以下解决方法,它适用于单个情节
rgb(r,g,b) = 65536 * int(r) + 256 * int(g) + int(b)
set multiplot
do for [i=2:201] {
rr = 255*rand(0)
gg = 255*rand(0)
bb = 255*rand(0)
plot 'moredata.inp' u 1:i:(rgb(rr,gg,bb)) w line notitle lt 1 lc rgb variable lw 2
}
但是,我不能用do循环替换“I=2:101的绘图”,因为结果是每个子绘图一行
有什么想法吗
谢谢要仅使用实线,请使用
set termoption solid
为了迭代线条颜色,可以使用lc变量
(不使用rgb
!)。在这种情况下,最后一列用作线型
索引。如果需要线型的其他颜色,可以使用设置线型…
。如果使用设置样式增量用户
,索引将引用线型
或者,您可以使用lc调色板
并定义适当的调色板,请参见例如。我认为这可能是最好的选择,因为你需要很多颜色:
set palette model HSV defined ( 0 0 1 1, 1 1 1 1 ) # rainbow palette
plot for [i=2:101] 'mydata.txt' u 1:i lc palette frac (i/101.0) w line notitle
比你更重要的是,设置选项实体是关键问题!。为了使上面的行正常工作,我将其更改为…lc palette frac(I/101.0).@giorgk对,我更正了答案,谢谢。我对这个和所有
变量选项感到困惑。谢谢!!“设置术语选项实体”是关键。为了使上述线路正常工作,我不得不将其更改为…lc调色板分形(I/101.0)。。。但是在最后,我发现默认颜色比任何调色板都好,所以我没有使用lc选项。
set palette model HSV defined ( 0 0 1 1, 1 1 1 1 ) # rainbow palette
plot for [i=2:101] 'mydata.txt' u 1:i lc palette frac (i/101.0) w line notitle