如何绘制平滑曲线以及原始数据?

3

我希望使用pointtype在一些图表中添加标记。如果我像下面这样绘制数据:

plot "somedata.txt" w linespoint pointtype 6 

或者像这样的功能:
plot cos(x) pointtype 6

我想要的是:在数据点之间画一条线,并在所有数据点上方标记。现在我想做到相同的效果,但是在使用 smooth bezier 平滑数据集后:

plot "somedata.txt" w linespoint pointtype 6 smooth bezier

然而,pointtype 似乎没有起到任何作用。我可以像以前一样设置 linecolorlinewidthlinetype,但不能设置 pointtype

有人知道一个解决方法吗?它仍然可以在平滑绘图的顶部产生标记。

3个回答

1
我有同样的问题,即 gnuplot 无法在平滑曲线上绘制点。我猜测由于 gnuplot 绘制的是从数据点派生出来的函数,因此它不会费心将点标记放在原始数据点的上方。
请注意,贝塞尔曲线不一定与原始数据点重叠。
我的解决方法涉及以不同方式两次绘制数据:
plot 'data.txt' with points title 'original data', \
  '' smooth bezier title 'smoothed data'

0
有点晚了,但你可以用点或线点来绘制平滑曲线,不需要两次操作。由于某些我不理解的原因,smooth bezierw lp pt 6的顺序似乎很重要。如果smooth bezier放在最后,尽管指定了w lp pt 6,你只会得到一条没有点的线。如果smooth bezier放在最前面,你会得到预期的结果。这个行为在gnuplot 5.5中仍然是一样的。 脚本:(至少适用于gnuplot>=4.4.0,2010年3月)
### plot smooth bezier with pointtypes
reset 

set samples 50

plot '+' u 1:(rand(0)) w lp pt 6 lc rgb "grey"                    ti "without smooth", \
     '+' u 1:(rand(0)) w lp pt 6 lc rgb "red" smooth bezier       ti "smooth last", \
     '+' u 1:(rand(0)) smooth bezier w lp pt 6 lc rgb "web-green" ti "smooth first"
### end of script

Result:

enter image description here


0
我同意 @andyras 的观点。 几周前,我也遇到了此问题,找不到同时绘制平滑曲线和数据的方法。 因此,我绘制了两个系列,一个带有平滑曲线,另一个仅包含点。
编辑:抱歉添加新答案。 我在手机上,找不到在 @andyras 的回答下评论的方法。

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