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

问题描述 投票:0回答: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
似乎没有做任何事情。我可以像以前一样设置
linecolor
linewidth
linetype
,但不能设置
pointtype

有谁知道仍然可以在平滑图上生成标记的解决方法吗?

gnuplot
3个回答
1
投票

我有同样的问题,gnuplot 没有在平滑曲线上绘制点。我推测,由于 gnuplot 正在绘制从数据点派生的函数,因此它不会将点标记放在原始数据点之上

请注意,贝塞尔曲线不一定会覆盖原始数据点。

我的解决方法是用不同的方式绘制数据两次:

plot 'data.txt' with points title 'original data', \
  '' smooth bezier title 'smoothed data'

0
投票

我同意@andyras。我几周前就遇到了这个问题,但找不到一种方法来放置平滑曲线和数据。因此,我绘制了两个系列,一个具有平滑曲线,另一个仅用于点。

编辑:很抱歉添加新答案。我正在使用手机,找不到在 @andyras 答案下发表评论的方法


0
投票

有点晚了,但是您可以用点或线点绘制平滑曲线,不需要两次通过。由于某些我不明白的原因,

smooth bezier
w 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

结果:

© www.soinside.com 2019 - 2024. All rights reserved.