如何在Gnuplot中基于conTime轴仅显示日期变化处的标签
Gnuplot实现X轴仅标注日期变化位置的配置方案
核心思路
- 直接复用你已通过SQL预处理好的CSV数据(仅日期变化的行保留dayXS_date值,其余行留空)
- 借助Gnuplot的
xtic()函数绑定数据列,只在非空日期的位置生成X轴刻度标签 - 始终以conTime作为X轴的实际数值基准,保证曲线的平滑性
完整Gnuplot代码示例
# 适配CSV格式的基础配置 set datafile separator ',' # 设置输出终端,这里用PNG,可按需改成SVG/PDF等格式 set terminal pngcairo enhanced font 'Arial,10' size 1200,600 set output 'monitor_trend.png' # X轴关键配置 set xlabel '时间' set xtics rotate by 45 right # 旋转标签避免重叠,角度可自行调整 set format x '' # 隐藏默认的conTime数值刻度,只显示日期标签 # 绘图命令:第一行绘制监测曲线,第二行确保日期刻度正常生成 plot 'your_data.csv' using 1:2:xtic(3) with linespoints lw 2 title '监测数值', \ '' using 1:(NaN):xtic(3) with points notitle
关键配置说明
set datafile separator ',':必须设置,否则Gnuplot无法正确解析CSV数据set format x '':隐藏默认的conTime数值刻度,只保留自定义的日期标签xtic(3):指定用第3列(dayXS_date)作为刻度标签,Gnuplot会自动跳过空值行,不会生成无效标签rotate by 45 right:解决日期标签过长重叠的问题,角度可根据实际显示效果调整(比如改成30度)
适配你的数据样本的调整建议
假设你的CSV数据结构如下(示例):
conTime,temp_value,dayXS_date
100,23.5,2024-05-01
101,24.1,
102,23.8,
150,25.3,2024-05-02
151,24.9,
- 如果dayXS_date在你的CSV里是第4列,把代码里的
xtic(3)改成xtic(4)即可 - 若不需要显示数据点,把
with linespoints改成with lines;若只想看数据点,改成with points - 调整曲线粗细可添加
lw N参数(N为数字,比如lw 2代表2倍线粗)
针对你之前尝试代码的优化提示
如果之前的代码出现空标签占位、刻度乱跳的问题,本质是没利用好Gnuplot对空xtic()值的自动忽略特性。改用using 列号:列号:xtic(日期列)的方式,就能精准只在日期变化的位置生成标签。
内容的提问来源于stack exchange,提问作者Cwinte
相关产品推荐
相关产品推荐

