如何在gnuplot中绘制线不穿过空心方形、三角形的线点图
解决方案:固定大小空心标记的线点图(线条不穿过标记)
核心思路是先画底层线条,再在上方叠加固定大小的空心标记,这样标记会完全覆盖线条穿过的部分,解决空心标记的视觉问题。关键是用screen单位定义标记大小,确保它不随坐标轴范围(包括对数轴)变化。
1. 空心方形的正确实现
放弃boxxy(它用数据坐标定义大小,会随轴缩放),改用with squares配合set style square设置固定的屏幕单位大小:
# 设置方形标记的大小(screen单位,0到1对应整个画布) set style square screen 0.02 # 大小可根据需求调整 plot 'data1.dat' u 1:2 w l lw 4 lc "blue" notitle, \ 'data1.dat' u 1:2 with squares fillcolor "cyan" fs solid 0.2 border lc "blue" notitle
2. 空心三角形的实现
用with triangles,同样用screen单位固定大小:
set style triangle screen 0.03 # 调整大小适配需求 plot 'data1.dat' u 1:2 w l lw 4 lc "green" notitle, \ 'data1.dat' u 1:2 with triangles fillcolor "yellow" fs solid 0.2 border lc "green" notitle
3. 通用规则(适用于其他标记)
对于圆形、菱形等其他标记,都可以用类似方式:
- 圆形:把你之前的命令改成
set style circle radius screen 0.01(用screen单位替代数据单位,确保大小不随轴变化) - 菱形:
set style diamond screen 0.02+with diamonds组合使用
对数轴适配说明
只要用screen单位定义标记大小,不管x/y轴是线性还是对数,标记的物理大小都会保持一致,彻底解决你遇到的缩放问题。
内容的提问来源于stack exchange,提问作者SrD4443
相关产品推荐
相关产品推荐

