Несоответствующий размер ключа и поля в Gnuplot - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь сгенерировать график с большим верхним полем, и в этом поле поместите большой ключ.

Согласно документации Gnuplot 5.2 :

set tmargin {{at screen} <margin>}

Поле - это расстояние между границей графика и внешним краем холста

и

... screen указывает область экрана (всю область, а не только часть, выбранную с помощью установленного размера ), с 0,0 в левом нижнем углу и 1,1 в правом верхнем углу.

Однако, когда я запускаю следующий скрипт,

reset
set terminal pngcairo font '12,'
set key on tmargin
N = 15
M = 20
do for [m=2:(M-2)] {
this_margin = m/(0.0 + M)
#print this_margin
set tmargin at screen this_margin
set title sprintf("set tmargin at screen %0.2f",this_margin)
set output sprintf("margin_test_%02i.png", m)
plot for [i=0:N] cos(i*x) title sprintf("cos(%2ix)",i)
}

я генерирую следующую анимацию:
animation

Эта анимация показывает, что когдаполе большое (т. е. set margin at screen 0.15), ключ не может заполнить поле, вместо этого он сдавливается в область верхнего поля.Только когда поле невелико (т. Е. set margin at screen 0.80), ключ может опуститься до одного столбца.Разве это не поведение в обратном направлении?

Мой вопрос:

Как получить большое верхнее поле (т. Е. set tmargin at screen 0.20, как в начале графика в анимации) без gnuplot протолкнул ключ tmargin в верхнюю часть холста?

Обратите внимание, что простая установка местоположения ключа вручную (например, set key at x,y maxcols 1) не исправляет сжатый ключ для больших полей.

1 Ответ

0 голосов
/ 19 сентября 2018

Возможно set key above maxcols 1 даст вам желаемую легенду:

this_margin = 0.2
set tmargin at screen this_margin
set key on above maxcols 1
set title sprintf("set tmargin at screen %0.2f",this_margin)
plot for [i=0:15] cos(i*x) title sprintf("cos(%2ix)",i)

enter image description here

...