Function GNUPLOT:如何使用函数来决定打印样式

Function GNUPLOT:如何使用函数来决定打印样式,function,gnuplot,Function,Gnuplot,我有很多系列画在一个情节。我想根据系列的数量来决定打印样式/类型。以下是我的目标代码示例: title(i)=value(sprintf("title%i",i)) title1='x' title2='x^2' title3='x^3' ... with(i)=value(sprintf("with%i",i)) with1='lines' with2='points' with3='boxes' ... plot for [i=1:100] '-' title title(i) with

我有很多系列画在一个情节。我想根据系列的数量来决定打印样式/类型。以下是我的目标代码示例:

title(i)=value(sprintf("title%i",i))
title1='x'
title2='x^2'
title3='x^3'
...

with(i)=value(sprintf("with%i",i))
with1='lines'
with2='points'
with3='boxes'
...

plot for [i=1:100] '-' title title(i) with with(i)
我已经测试了title()函数的工作情况。但是with函数不能正常工作

你能帮我修一下密码吗


或者您认为还有其他方法可以实现我的目标吗?

可以构建一个绘图命令字符串,然后运行该字符串:

p="plot x linewidth 1"
do for [i=1:10]{
    p=p.sprintf(", x+%d linewidth %d", i, i+1)
}


print p

eval(p)
打印命令的输出为:

plot x linewidth 1, x+1 linewidth 2, x+2 linewidth 3, ...
这是结果图:

取决于您最终想要什么,这可能是您想要的:

do for [i=1:10]{
    p=p.(i==1 ? "'myData.csv' with lines" : "")
    p=p.(i==2 ? "'myData.csv' with steps" : "")
    ...

}

然而,这看起来很难看。

我尝试了几种方法,但没有成功。通常这种替换需要宏:
set宏;样式为“带盒子”;打印x@style
。但这在您的情况下不起作用,因为宏使用字符串变量(这里是
样式
),而不使用函数。我想,你需要用一个外部工具来生成整个脚本……然而,这似乎是不可能的?是否可以使用多重绘图绕过障碍物?是否可以在plot命令之前设置with types?e、 g.设置为xxxx;地块YYYY@ChristophYes,您可以使用
设置样式数据行
和类似功能。因此,您可以使用
eval('set style data')。使用(3))
,但使用multiplot时,标题会出现问题。对于感兴趣的读者:OP对此提出了一个功能要求。您是否可以循环使用所有可用的线型?我能够使用2:1和linespoints pointtype n pointsize 0.5来绘制[n=0:20:1]''索引n-1的
绘图,其中
pointtype n
只是循环所有可用的点类型。