Gnplot:在for循环中设置线条样式 [英] gnuplot : setting line style in a for loop

查看:0
本文介绍了Gnplot:在for循环中设置线条样式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须在同一张图上绘制几条曲线。为了做到这一点,我必须使用for循环。我想用线画2条第一条曲线,用点画其他的曲线。我可以用直线绘制所有的曲线,也可以用点绘制所有的曲线,但不能在同一个for循环中更改。 以下是我的代码的相关部分:
set style line 1 lw 1 lc rgb "green"
set style line 2 lw 1 lc rgb "purple"
set style line 3 pt 1 ps 1.0 lc rgb "red"
set style line 4 pt 2 ps 1.0 lc rgb "red"
set style line 5 pt 3 ps 1.0 lc rgb "red"
plot for [i=1:words(FILES)] myDataFile(i) u (column(1)):((word(UTAUS_ch,i))) ls i title myTitle(i)

对于第一条曲线,我想以ls i";开头,w l";开头,对于其他曲线,ls i";开头。我尝试通过将";ls i";替换为";if(i<;2){w l ls i}Else{ls i}";来使用IF语句,但Gnuplot预计在此位置找不到IF语句。

有人能帮帮我吗? 谢谢, 马丁

推荐答案

如前所述here您可能无法在plot for循环内切换打印样式。 因此,要么执行两个单独的循环,一个with points,另一个with lines,要么执行一个循环with linespoints,并将点和线的所有必要参数定义为函数(以保持Plot命令的可读性)。 如here所述,linewidth 0不是零,而是通常为1像素的最细可能线条。若要使线条完全消失,您必须使用linetype -2

编码:

### lines and points in the same plot for-loop
reset session

LINECOLORS = "red  green blue  magenta cyan"
LINEWIDTHS = '1.0  4.0   0.0   0.0     0.0'
POINTTYPES = '0    0     5     7       9'
POINTSIZES = '0    0     1.0   2.0     3.0'
TITLES     = 'one  two   three four    five'

myLinecolor(i) = word(LINECOLORS,i)
myLinewidth(i) = real(word(LINEWIDTHS,i))
myPointtype(i) = int(word(POINTTYPES,i))
myPointsize(i) = real(word(POINTSIZES,i))
myLinetype(i) = myLinewidth(i) == 0 ? -2 : 1
myTitle(i) = word(TITLES,i)

set samples 31
set key out

plot for [i=1:words(TITLES)] (sin(0.25*x-i)) w lp pt myPointtype(i) ps myPointsize(i) 
    lt myLinetype(i) lw myLinewidth(i) lc rgb myLinecolor(i) title myTitle(i)
### end of code

结果:

添加:

为了使PLOT命令尽可能简短明了,您还可以定义线条样式,并通过ls iplot for命令中使用它,结果与上面相同。

...

do for [i=1:words(TITLES)] {
    set style line i pt myPointtype(i) ps myPointsize(i) 
        lt myLinetype(i) lw myLinewidth(i) lc rgb myLinecolor(i)
}

plot for [i=1:words(TITLES)] (sin(0.25*x-i)) w lp ls i title myTitle(i)

这篇关于Gnplot:在for循环中设置线条样式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆