XLABEL не удалось равномерно отобразить в многоплоскостных участках с макрос - PullRequest
1 голос
/ 15 апреля 2020

Я строю несколько файлов данных в одном кадре с помощью команды multiplot в gnuplot (версия 5.2). Мне удалось воспроизвести проблему, с которой я столкнулся, с помощью этого кода ниже, где, например, вместо файлов данных я строю простые sin -функции.

Код

reset session

# ****** margins *****
if (!exists("MP_LEFT")) MP_LEFT = 0.1
if (!exists("MP_RIGHT")) MP_RIGHT = 0.95
if (!exists("MP_BOTTOM")) MP_BOTTOM = 0.075
if (!exists("MP_TOP")) MP_TOP = 0.925
if (!exists("MP_GAP")) MP_GAP = 0.025

# ****** Macros *****
XLABEL = "set xlabel '{/:Italic=20 x}' offset graph 0, 0.3"
NOXLABEL = "unset xlabel"
NOXTICS = "set format x ''"
NOYTICS = "set format y ''"
OBJECT = "unset object; set object circle at graph 0, 0 radius scr 0.1"
set terminal pngcairo 
set termoption font "Times, 12"
set output "test.png"
    set multiplot layout 2, 2 rowsfirst \
        margins scr MP_LEFT, MP_RIGHT, MP_BOTTOM, MP_TOP \
        spacing scr MP_GAP 
        @NOXLABEL
        @XLABEL
        @NOXTICS
        @NOYTICS
        @OBJECT
        plot sin(x) w l title "sin(x)"
        @NOXLABEL
        @XLABEL
        @NOXTICS
        @NOYTICS
        plot sin(x + pi/4) w l title "sin(x + {/Symbol p}/4)"
        @NOXLABEL
        @XLABEL
        @OBJECT
        @NOXTICS
        @NOYTICS
        plot sin(x + pi/2) w l title "sin(x + {/Symbol p}/2)"
        @NOXLABEL
        @XLABEL
        @OBJECT
        @NOXTICS
        @NOYTICS
        plot sin(x + pi) w l title "sin(x + {/Symbol p})"
    unset multiplot 
unset output 

Макросы очень полезны в мультиплоте, так как они помогают совместно использовать похожие команды во всех подсюжетах, как я делаю, например, с макросом OBJECT. Однако здесь я не смог понять, почему смещение, которое я выбираю для xlabels с помощью макроса XLABEL, создает различные сдвиги по отношению к xaxis на разных вспомогательных участках, особенно в (строка: 1, столбец: 1) и (строка: 2, столбец: 1) в результате ниже.

Результат

Result of code run

Может Кто-нибудь помочь исправить неправильное поведение xlabel в макросе? Объяснение проблемы приветствуется.

1 Ответ

2 голосов
/ 15 апреля 2020

Вы можете исправить поведение, если вы используете, например, offset screen 0,0.15 или offset 0,4 вместо offset graph 0.3. Это может решить проблему, но не объясняет неожиданное поведение с offset graph. Жук? По крайней мере, что-то с происхождением и размерами вспомогательных участков в мультиплотной среде. Но это не имеет ничего общего с самим макросом. Проверьте следующие дополнительные свернутые примеры.

Код 1:

reset session
set multiplot layout 2,2 rowsfirst
    set xlabel "x label" offset graph 0, 0.3
    plot x
    plot x
    plot x
    plot x
unset multiplot

Результат 1:

enter image description here

Код 2:

reset session
set multiplot layout 2,2 rowsfirst
    set xlabel "x label" offset screen 0, 0.15
    plot x
    plot x
    plot x
    plot x
unset multiplot

Результат 2:

enter image description here

...