不,没有将 x 和 y 范围自动缩放到相同值的选项。这是一个解决方案,您可以通过一些技巧来做到这一点。
如果你想保持 gnuplot 的范围扩展到下一个抽动,你可以这样做:
您必须首先使用unknown 终端绘制一次。这会将 x 和 y 范围保存在 gnuplot 变量 GPVAL_X_MIN、GPVAL_X_MAX、GPVAL_Y_MIN 和 GPVAL_Y_MAX 中。然后设置范围并重新绘制:
set terminal push # save current terminal
set terminal unknown
plot 'datafile'
set terminal pop # restore previous terminal
min = (GPVAL_Y_MIN < GPVAL_X_MIN ? GPVAL_Y_MIN : GPVAL_X_MIN)
max = (GPVAL_Y_MAX > GPVAL_X_MAX ? GPVAL_Y_MAX : GPVAL_X_MAX)
set xrange[min:max]
set yrange[min:max]
set size ratio -1
replot
只有在您想保留初始终端设置时才需要推送/弹出内容。
为了使其可重复使用,例如对于multiplot,您可以将所有这些命令包装在一个字符串中并在其上调用eval:
autoscale_xy(datafile) = \
"set terminal push; set terminal unknown; set autoscale;".\
"plot '".datafile."'; set terminal pop;".\
"min = (GPVAL_Y_MIN < GPVAL_X_MIN ? GPVAL_Y_MIN : GPVAL_X_MIN);".\
"max = (GPVAL_Y_MAX > GPVAL_X_MAX ? GPVAL_Y_MAX : GPVAL_X_MAX);".\
"set xrange[min:max]; set yrange[min:max];"
...
files = "first second third fourth"
do for [f in files] {
eval(autoscale_xy(f))
plot f
}
另一种选择是使用 stats 计算最大和最小 x 和 y 值并相应地设置范围:
stats 'datafile' using 1:2 nooutput
min = (STATS_min_y < STATS_min_x ? STATS_min_y : STATS_min_x)
min = (STATS_max_y > STATS_max_x ? STATS_max_y : STATS_max_x)
sc = 1.05
set xrange[sc*min:sc*max]
set yrange[sc*min:sc*max]
set size ratio -1
plot 'datafile'