使用两个轴设置匹配的刻度数

Setting matching number of ticks using two axis

我想知道如何使用 gnuplot 为独立的 yy2 轴设置相同数量的 ytics , 仍然使用自动缩放, 使网格很好地对齐。

现在,正如您在下面看到的,y 轴有 6 个刻度,y2 轴有 7 个刻度,图表看起来可读性很差。

据我所知,Gnuplot 只允许您指定定义抽动的增量而不是它们的计数。一个有点脏的解决方法是首先将绘图生成到 "fake" 终端,记住每个轴上检测到的自动缩放范围,计算所需的抽动间距,最后使用这些设置生成图像。

N = 6

set term unknown

set ytics
set y2tics #setting y2tics affects autoscale
set ylabel 'MSE'
set y2label 'CE'
set grid

set format y "%.2f"
set format y2 "%.1f"

plot \
    'mse.dat' u 1:2 axis x1y1 w l t 'MSE', \
    'ce.dat' u 1:2 axis x1y2 w l t 'CE'

min_y1 = GPVAL_Y_MIN
max_y1 = GPVAL_Y_MAX

min_y2 = GPVAL_Y2_MIN
max_y2 = GPVAL_Y2_MAX

dy1 = (max_y1 - min_y1) / N
dy2 = (max_y2 - min_y2) / N

set ytics min_y1, dy1
set y2tics min_y2, dy2

set yr [min_y1:max_y1]
set y2r [min_y2:max_y2]

set term png enhanced
set output "test.png"

replot 

然后生成(使用数据的数字化近似值):