在gnuplot的平滑函数中包含数据点

4

以下是数据:

38 52.26
41 46.34
42 49.49

使用“平滑”线条,我能否在绘制一次图形的同时包含图形线上的点呢?

现在我这样做:

plot "foo.dat" using ($0):2 smooth csplines title "foo", \
               '' using ($0):2 with points title ""

示例图表

扩展简化数据集:

38     52.26
39     46.34
42     57.29
43     60.41
44     53.57
45     51.49
46     48.24
49     58.50
50     56.85
51     55.56
52     62.81
54     51.76
55     46.94
56     46.35
57     52.76
59     49.49
62     51.78
63     48.24
65     54.46
66     50.00

1
你可以尝试使用 with linespoints,但我不确定它是否能实现你想要的效果(我需要一个完整的数据文件来进行实验)。额外的代码行有什么问题吗?换句话说,你想让你的图表看起来不同吗?如果是的话,你想改变什么?如果你提供更多关于你所寻找的内容的详细信息,我们可能能够处理它。 - mgilson
@mgilson:是的,with linespoints 不是我想要的,因为它在给定点间隔设置点 - 而不是在“数据点”处。那条额外的线没有什么问题,但我想知道是否有更清洁/更正确的方法来做到这一点。 - Luca Stein
在这种情况下,我会说除了对于第二个图使用“' 'using ($0):2 with points notitle ”代替“title ""”之外,没有更干净的方法来做这件事。 - mgilson
@mgilson:好的。谢谢。将其添加为答案,我会接受 :) (附注:“扩展简化数据集”有点愚蠢,因为第一列不是连续的。(通常是1 2 4 7,而不是1 2 3 4 5 6 7)。-现在已编辑以供参考。)notile很好- title ""看起来更像是一个hack,在代码中含糊不清。 - Luca Stein
1个回答

7
这是我的做法:

这是我的做法:

...
plot "file" using 1:3 notitle with points linestyle 1, \
     "" using 1:3 notitle smooth csplines with lines linestyle 1, \
     1 / 0 title "title" with linespoints linestyle 1
...

插入图像描述

第一行将数据点绘制在图形上,没有图例。

第二行将平滑线绘制在图形上,同样没有图例。

第三行只是为了图例,使用了组合的点线。

如果在平滑线上使用linespoints,则会显示所有的点使其平滑,而不仅仅是数据点。

“linestyle”命令告诉gnuplot使用相同的样式绘制所有数据,基本上是将线条和点组合成线点。第三行“linespoints”只是为了图例,没有将任何数据放在图形上。


4
无论这个方法是否有效,请尽量在您的代码中附上一些解释。一个高质量的答案不仅会给出解决方案,还会解释它是如何工作的/为什么以那种方式进行。 - Scott Solmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接