如何在gnuplot中保留原有绘图并叠加圆形标记?
问题原因与解决方案
无法叠加的核心原因
- 语法错误:你的plot命令最后一行
notitle'多了一个多余的单引号,gnuplot解析到这里会报错,导致第二个绘图指令(圆形标记)无法执行,只能显示第一个曲线或圆形标记中的一个。 - 坐标顺序/范围不匹配:你之前尝试用
set object circle时的坐标是5.2055,3430(x=5.2055,y=3430),但自定义数据集$data里写的是3400,5.2055,相当于把x和y坐标搞反了;再加上你设置的plot范围是[3200:4400](针对x轴),如果shurb/foo.csv的x轴数据是5左右的小数值,曲线会被排除在这个x范围外,自然看不到曲线,只能看到圆形标记。
修正后的代码
set font "arial,12" set autoscale set datafile separator comma set xtics out nomirror set ytics out nomirror unset border set border 3 set format y "%0.04s %cV " set format x # 修正坐标顺序,与你之前set object的坐标一致 $data <<EOD 5.2055,3430 EOD # 调整plot范围适配foo.csv的x轴区间,假设x轴集中在5左右,y轴3200-4400 plot [5:5.5] "shurb/foo.csv" u 1:2 w l lc rgb 'dark-green' title 'AP',\ $data using 1:2 with circle lw 1 lc rgb 'red' notitle
额外说明
- 如果不确定
shurb/foo.csv的x轴范围,可以去掉plot后的[5:5.5],让gnuplot自动缩放,确保曲线和圆形都在显示范围内。 - 也可以用
set object的方式直接添加圆形,这种方式不需要自定义数据集,只需在plot前添加:
加上set object circle at 5.2055,3430 size 25.5 lw 5 fc rgb "red" front plot "shurb/foo.csv" u 1:2 w l lc rgb 'dark-green' title 'AP'front参数可以确保圆形显示在曲线上方。
内容的提问来源于stack exchange,提问作者Zubeyir
相关产品推荐
相关产品推荐

