You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在gnuplot中根据X值(年份)设置不同的线条线型?

在Gnuplot中按X轴范围设置折线不同线型的简便方案

需求说明

需要绘制以年份为X轴的折线图:

  • 2022年及之前的实际数据段用实线连接
  • 2022年之后的预测数据段用虚线连接

提供的数据如下:

年份数值
19805
199010
200017
201027
202039
202244
203060

当前使用的命令只能画出整条实线:

plot 'input.dat' using 1:2 with lines dashtype 1

希望找到无需使用multiplot的简便方法,替代繁琐的多图拼接。

解决方案

无需用multiplot,在同一个plot命令中通过条件筛选数据即可实现分段线型,以下是两种通用方法:

方法1:基于X值的条件判断(推荐,不受数据行数影响)

利用Gnuplot的三元表达式,仅渲染符合X范围的数据点,自动分段:

plot 'input.dat' using 1:($1 <= 2022 ? $2 : NaN) with lines dashtype 1 title "实际数据", \
     '' using 1:($1 >= 2022 ? $2 : NaN) with lines dashtype 0 title "预测数据"
  • $1 <= 2022 ? $2 : NaN:当X值≤2022时取对应Y值,否则返回NaN(不渲染)
  • 两段线会在2022的点上自然衔接,无需额外处理
  • dashtype 1对应实线,dashtype 0对应虚线(部分旧版本Gnuplot可替换为linetype)

方法2:基于数据行号的筛选

如果数据行固定,可以直接指定行范围(注意Gnuplot行号从0开始计数):

plot 'input.dat' using 1:2 every ::0::5 with lines dashtype 1 title "实际数据", \
     '' using 1:2 every ::5::6 with lines dashtype 0 title "预测数据"
  • every ::0::5:选取第0到第5行(对应1980至2022的数据)
  • every ::5::6:选取第5到第6行(对应2022至2030的数据)

说明

两种方法都在同一个绘图画布中完成,避免了multiplot的繁琐设置,同时保证折线在2022年的节点处完美连接。

内容的提问来源于stack exchange,提问作者mrleop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:09:22