您需要的变量是
GPVAL_DATA_Y_MIN
和
GPVAL_DATA_Y_MAX
,它们是在特定范围内绘制的数据的y轴最小/最大值。一般来说,
GPVAL_Y_MIN
和
GPVAL_Y_MAX
并不是很有用,因为它们告诉您图形边界的位置(通常这些值会在
GPVAL_DATA...
变量之外留出一些空间,因为gnuplot会在数据和图形边界之间保留一些空隙)。
要利用这些变量,您必须在绘图命令中使用范围限定符:
plot [1:3] 'data.txt'
set yr [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]
replot
...
顺便提一下,
u 1:2
规范是多余的,除非你想提醒自己正在绘制哪些列,因为将前两列作为 x 和 y 进行绘图是 gnuplot 的默认设置。如果你不想重新绘制到相同的输出终端(在某些终端中这并不有用,比如 eps 终端,因为重新绘制会生成一个带有相同图形的第二个页面),请使用此命令序列:
set terminal unknown
plot [1:3] 'data.txt'
set terminal <actual output terminal here>
set output 'output.trm'
plot [1:3][GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX] 'data.txt'
请注意再次使用范围说明符,这次指定了y范围。这比使用
set yrange
更紧凑,但会使代码行变得更长。
如果您拥有gnuplot 4.6.0或更高版本,可以利用
stats
命令避免重新绘图。
stats
命令会创建一些方便的变量。
stats [1:3] 'data.txt'
plot [1:3][stats_min_y:stats_max_y] 'data.txt'
稍有不同的指令:
stats [1:3] 'data.txt'
plot [stats_min_x:stats_max_x][stats_min_y:stats_max_y] 'data.txt'
根据实际数据在x轴方向填充图形。例如,如果您有数据点{(1.1, 3), (2, 4), (2.9,5)},则x范围将设置为[1.1:2.9]。
set yrange [*:*]
即可达到相同的效果。 - SDsolar