Почему размер терминала не определен после запуска gnuplot?

#gnuplot

#gnuplot

Вопрос:

После запуска gnuplot (консоль) даже без указания терминала и размера холста определяются значения по умолчанию, в моем случае wxt и 640,384 .

Ничего не построив, если я наберу в консоли или использую в скрипте:

 print GPVAL_TERM_XSIZE, GPVAL_TERM_YSIZE
  

Я получу сообщение об ошибке:

 undefined variable: GPVAL_TERM_XSIZE
  

Я знаю, что многие другие GVPAL_... переменные зависят от графика и самих данных. Итак, ясно, что они определены, только если вы что-то нанесли на график.

Но почему GPVAL_TERM_XSIZE и GPVAL_TERM_YSIZE не определены после запуска, если есть значения по умолчанию? Даже если я укажу размер, следующее все равно выдаст ту же ошибку:

 set term wxt size 500,400
print GPVAL_TERM_XSIZE, GPVAL_TERM_YSIZE
  

Я знаю, что могу (или должен) создать некоторый фиктивный график для инициализации значений GPVAL_TERM_XSIZE и GPVAL_TERM_YSIZE . Но зачем это необходимо?
Спасибо за пояснения.

Ответ №1:

При вводе программы на консоль выводится имя текущего терминала (обычно по умолчанию, но вы могли изменить его в ./gnuplot). Но терминал фактически не открывается до первой команды plot. Это дает вам время изменить терминал или установить другие свойства терминала перед построением графика. При первом открытии терминала он заполняет различные значения GPVAL_TERM, включая его текущий размер.

Программные переменные GPVAL_* обновляются после каждой команды построения графика. Те, которые зависят от самого последнего графика, включая все переменные GPVAL_TERM_ *, не существуют до окончания первого графика.

Комментарии:

1. ОК. спасибо вам за разъяснение. Таким образом, нет никакого способа получить размер терминала, ничего не построив. Ну, по крайней мере, если вы set term wxt size 500,500 тогда знаете, что GPVAL_TERM_XSIZE и GPVAL_TERM_YSIZE должно быть (по некоторым причинам умноженным на 20) 10000,10000. Однако, по-видимому, только до gnuplot 5.2.7. В gnuplot 5.2.8 это 9980,9980. Почему? Ну, на самом деле, это другой вопрос.