问题描述
我只想绘制填充曲线,直到第一列上的值小于零。我应该怎么做?也许每次绘制两条不同范围的不同线?
我的代码是:
p "data.txt" ($1 <=0 ? $2 : 1/0) w filledcurves,'' ($1 <=0 ? $2 : 1/0) w filledcurves,\
...
以另一种方式,x 轴是正确的,而曲线仍然以奇怪的方式填充:
plot 'data.txt' u 1:($1<=0?$2:1/0)
那些是 gnuplot 中的错误吗?
还有一种方法可以和线同时绘制,并选择线型?
解决方法
有几个问题:
1 - 您应该使用 using
或 u
,例如:
plot "data.txt" u ($1 <=0 ? $2 : 1/0)
2 - 在这种形式中,您绘制第 2 列(或不绘制;取决于第 1 列)与第 0 列((几乎)等于行号)的关系。要检查此效果,请尝试查看:
plot "data.txt" u 2
3 - 答案:正确的语法如下:
plot 'data.txt' u ($1<=0?$1:1/0):2
或
plot 'data.txt' u 1:($1<=0?$2:1/0)
这取决于您实际上想要绘制什么。它们之间的区别在于,第一个将图的 xrange
设置为 0,而第二个显示更宽的 xrange
(最多为数据的 x_max)。但是,在您的情况下,您可以同时使用它们。 (或者你可以混合它们。)例如:
plot 'data.txt' u 1:($1<=40?$2:1/0) w filledcurves y=0,'' u 1:($1>40?$2:1/0) w l lc 1
您的绘图的问题在于,使用带有 2 列数据集的“裸”filledcurves
,默认选项是 closed
,这会将数据集威胁为封闭多边形。