如何在gnuplot中生成联动的可靠双Y轴图表?
解决Gnuplot双Y轴联动匹配问题
你遇到的核心问题是未将y2-axis的数据绑定到右侧Y轴,且若需双轴联动,需设置轴间关联规则而非仅固定范围。以下是两种可行的解决方案:
方案1:固定双轴范围(匹配原始需求)
set xrange [5:70] set yrange [9.1:9.7] set y2range [85:89] unset key set xtics 15 font ",18" nomirror set xlabel "x-axis" font ",24" offset 0,-.5 set ytics .2 font ",18" nomirror set ylabel "y-axis" font ",24" offset -1.5 set y2tics font ",18" set y2label "y2-axis" font ",24" # 关键修正:分别绘制左右轴对应的数据 plot "Dataset.txt" using 1:2 with linespoints ls 1, \ "Dataset.txt" using 1:3 with linespoints ls 2 axes x1y2
方案2:双轴联动缩放(自动匹配数据范围)
若希望两个Y轴随数据自动同步缩放,可使用set link命令替代固定范围:
unset key set xtics 15 font ",18" nomirror set xlabel "x-axis" font ",24" offset 0,-.5 set ytics .2 font ",18" nomirror set ylabel "y-axis" font ",24" offset -1.5 set y2tics font ",18" set y2label "y2-axis" font ",24" # 根据你的数据集计算线性映射关系:y2 = -8.76*y + 172.5 set link y2 via (-8.76*y + 172.5) inverse ((172.5 - y2)/8.76) plot "Dataset.txt" using 1:2 with linespoints ls 1, \ "Dataset.txt" using 1:3 with linespoints ls 2 axes x1y2
核心说明:
- 原始代码仅绘制了
x-axis和y-axis列,未处理y2-axis数据,导致右轴为空轴无对应数据。 - 使用
axes x1y2指定第二组数据绑定到右侧Y轴。 - 联动缩放时,需先通过数据计算两组Y值的线性映射关系(可借助
stats命令自动计算更精确的参数),再用set link实现轴的同步缩放逻辑。
内容的提问来源于stack exchange,提问作者Muhammad Ihsan
相关产品推荐
相关产品推荐

