Ответ 1
Переменные, которые вы хотите, это GPVAL_DATA_Y_MIN
и GPVAL_DATA_Y_MAX
, которые представляют собой y-min/max данных, построенных в определенном диапазоне. GPVAL_Y_MIN
и GPVAL_Y_MAX
немного менее полезны, потому что они сообщают вам, где находятся грани границы графика (в общем, эти значения немного отличаются от переменных GPVAL_DATA...
, поскольку gnuplot оставляет небольшое пространство между данными и край графика).
Чтобы воспользоваться этими переменными, вы должны использовать спецификаторы диапазона для команды plot:
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'
Заполним график в направлении х, основываясь на том, где лежат фактические данные. Например, если у вас были точки данных в {(1.1, 3), (2, 4), (2.9,5)}, диапазон x был бы установлен в [1.1: 2.9].