gnuplot绘制折线图时如何用红色线条标记零值数据
问题描述
现有一个存储0~500范围数值的.csv数据文件,数据示例如下:
25.2 2.82 2.05 2.13 2.42 2.17 2.00 0 0 0 0 3.33 3.41 3.26 3.30 0 27.8
当前使用如下gnuplot命令绘制折线图:
plot 'out.csv' using 1 with lines
需求:将文件中所有数值为0的位置在图表上用单独的红色线条标记。
实现方案
直接在同一张图上叠加零值专属的绘制层即可,gnuplot遇到无效值NaN时会自动断开连线,正好可以用来过滤非零值,只渲染零值段的红色线条。
完整绘图命令如下:
plot 'out.csv' using 1 with lines title '原始数据折线', \ '' using ($1 == 0 ? $1 : NaN) with lines lc rgb 'red' lw 2 title '零值标记'
- 参数说明:
- 第一行命令和原有绘图逻辑完全一致,负责渲染正常的数值折线
- 第二行命令复用同一个数据文件,通过三元判断过滤数据:当前行数值为0时保留数值,非0时返回无效值NaN,所有零值段会单独以红色、2倍线宽渲染,和原有折线形成清晰区分
- 如果需要调整标记醒目程度,可修改
lw(即linewidth)后的数值调整线宽;如果需要用点而非线条标记零值,可将with lines替换为with points pt 7 ps 1.5,用红色实心圆点标记每个零值点位。
内容的提问来源于stack exchange,提问作者Lurch
相关产品推荐
相关产品推荐

