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

Gnuplot双X轴(日期/周数)boxxy误差棒偏移问题咨询

问题原因与解决方案

你的gnuplot脚本中x2轴的boxxy图形出现偏移,核心原因有两个:

  • 重复绘制同一组数据(分别绑定x1y1和x2y1轴),gnuplot处理双时间轴时,自动刻度计算的细微差异会导致坐标错位;
  • 未显式同步x1与x2轴的数值范围,导致x2轴的坐标映射和x1轴不完全对齐。

实际上双时间轴的作用是用不同格式展示同一x轴的刻度,完全不需要重复绘图。调整后的脚本如下:

$test0<<EOD 
m1  01.06.2025   30.06.2025 
m2  10.06.2025   17.07.2025 
m3  20.06.2025   08.08.2025 
EOD

set term qt font "Carlito,12" butt antialias size 1440,360

set timefmt "%d.%m.%Y" 
# 计算一个月的秒数作为xtics间隔
OneMonth = strptime("%m","2") - strptime("%m","1")
set xdata time 
set format x "%b %y" 
set x2data time 
set format x2 "%Ww"

# 显式同步x1和x2轴的范围,并强制数值映射完全一致
set xrange ["20.05.2025":"20.08.2025"]
set x2range ["20.05.2025":"20.08.2025"]
set link x2 via x inverse x

unset border

set yrange [-1:3] 
set xtics OneMonth nomirror 
set xtics offset 0,0.5 
set x2tics nomirror scale 0.8,0.5 font ",10" offset 0,-0.5 
set mxtics 4 
set mx2tics 2 
set ytics nomirror offset 1.5,0

set style fill transparent solid 0.3 
unset key
set grid y 

# 只需要绘制一次,x2轴会自动同步x1的坐标
plot $test0 using 2:($0):2:3:($0)-0.2:($0)+0.2:yticlabel(1) with boxxy lc "blue" axes x1y1

关键调整说明:

  • 用set link x2 via x inverse x强制x2轴与x1轴的数值完全一一映射,彻底避免坐标偏移;
  • 显式设置x2range与xrange一致,确保双轴的数值范围完全对齐;
  • 删除重复的plot命令,只绘制一次数据,双轴会各自显示对应的刻度格式;
  • 修正了OneMonth的计算方式,用两个月份的时间差计算一个月的秒数,比原代码更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:22:35