如何仅将曲线填充到某个值,同时使用线 gnuplot

How to fill curve only up to a certain value, simultaneously with line gnuplot

我只想绘制填充曲线,直到第一列上的值小于零。我应该怎么做?也许每次用不同的范围绘制两条不同的线?

我的代码是:

 p "data.txt"  ( <=0  ?  : 1/0) w filledcurves , '' ( <=0    ?  : 1/0) w filledcurves, \
 ...

但是这样x轴上的值是错误的并且曲线以错误的奇怪方式填充:


在这种情况下,x 轴是正确的,而曲线仍然以奇怪的方式填满:

plot 'data.txt' u 1:(<=0?:1/0)

这些是 gnuplot 中的错误吗?

虽然我会像这样但只填满到零:

还有一种方法可以同时画线,select线型?

有几个问题:

1 - 您应该使用 usingu,例如:

plot "data.txt" u ( <=0  ?  : 1/0)

2 - 在这种形式中,您绘制第 2 列(或什么都不绘制;取决于第 1 列)aganist 第 0 列((几乎)等于行号) .要检查此效果,请尝试查看:

plot "data.txt" u 2

3 - 答案: 正确的语法如下:

plot 'data.txt' u (<=0?:1/0):2    

plot 'data.txt' u 1:(<=0?:1/0) 

这取决于你实际想要绘制什么。它们之间的区别是第一个将绘图的 xrange 设置为 0,而第二个显示更宽的 xrange(最多 x_max 数据)。但是,在您的情况下,您可以同时使用它们。 (或者你可以混合使用它们。)例如:

plot 'data.txt' u 1:(<=40?:1/0) w filledcurves y=0, '' u  1:(>40?:1/0) w l lc 1

你的情节的问题是使用 'naked' filledcurves 和 2 列数据集,默认选项是 closed,它威胁数据集作为一个封闭的多边形。