Gnuplot: как избежать белых полей в PDF за счет настройки размера страницы и других параметров

Вот мой код:

set term pdfcairo enhanced dashed size 5,3;
set output "plot.pdf";
f(x,y)=sin(1.3*x)*cos(.9*y)+cos(.8*x)*sin(1.9*y)+cos(y*.2*x)
set size square
set xrange [-5:5]
set yrange [-5:5]
set contour base
set cntrparam level incremental -3, 0.5, 3
set palette rgbformulae 33,13,10
set pm3d map
set isosample 250, 250
unset key
set lmargin at screen 0.1;
set rmargin at screen 0.95;
set bmargin at screen 0.2;
set tmargin at screen 0.95;
splot f(x,y) with pm3d

Вот соответствующий сюжет:

введите описание изображения здесь

Вокруг графика белые поля. Как мне устранить эти белые поля, отредактировав код gnuplot?


person Changwang Zhang    schedule 06.05.2014    source источник
comment
pm3d и set margins не любят друг друга. Я бы предложил два варианта: 1) Вы используете plot ... with image, для которого вы не можете использовать функции, поэтому вам нужно будет экспортировать свои данные с помощью table. Это позволит вам без проблем устанавливать поля. 2) Вы используете внешнюю утилиту для обрезки PDF-файла. Я обычно использую pdfcrop.   -  person Miguel    schedule 07.05.2014
comment
Третий (уродливый) вариант: 3) Измените атрибут size графика на значение больше, чем set size 1,1, например. set size 1.5,1.25, пока изображение не будет соответствовать тому, что вам нравится; это не очень систематично и потребует много проб и ошибок. Из всех трех вариантов использую 1) сам.   -  person Miguel    schedule 07.05.2014
comment
Пытался установить размер страницы в терминале. Но я обнаружил, что полностью убрать поля нельзя. Если я могу установить положение рисунка на странице, я могу полностью удалить поле. Я просто не знаю, есть ли в Gnuplot такая функция: установка позиции рисунка на странице.   -  person Changwang Zhang    schedule 07.05.2014
comment
@Miguel Построение графиков с изображением можно выполнить с помощью функций: plot '++' using 1:2:(f($1,$2)), но, к сожалению, plot не поддерживает контуры, а обычно делает 2d графики.   -  person Christoph    schedule 07.05.2014
comment
@Christoph Я не знал, что фиктивный файл принимает две переменные, очень полезно!   -  person Miguel    schedule 07.05.2014
comment
Есть ли способ интерполировать для изображения, такого как set pm3d interpolate 0,0. На самом деле я рисую из файла данных.   -  person Changwang Zhang    schedule 07.05.2014
comment
@Leo Я предложил изменить не размер терминала, а размер фигуры, тогда вы можете сместить положение графика с помощью set origin, которое по умолчанию равно set origin 0,0. Чтобы ваша фигура оставалась в центре, если вы делаете set size 1.5,1.25, вы должны компенсировать ее на set origin -0.25,-0.125.   -  person Miguel    schedule 07.05.2014
comment
@Leo Взгляните на этот мой старый вопрос и ответ Кристофа: stackoverflow.com/questions/18771210/   -  person Miguel    schedule 07.05.2014


Ответы (1)


Спасибо, Мигель.

Теперь я устанавливаю размер страницы и поля. После нескольких тестов:

set term pdfcairo enhanced dashed size 3.2,3;
set output "plot.pdf";
f(x,y)=sin(1.3*x)*cos(.9*y)+cos(.8*x)*sin(1.9*y)+cos(y*.2*x)
set size square
set xrange [-5:5]
set yrange [-5:5]
set contour base
set cntrparam level incremental -3, 0.5, 3
set palette rgbformulae 33,13,10
set pm3d map
set isosample 250, 250
unset key
set lmargin at screen 0.05;
set rmargin at screen 0.9;
set bmargin at screen 0.1;
set tmargin at screen 0.95;
splot f(x,y) with pm3d

Вот цифра:

введите описание изображения здесь

person Changwang Zhang    schedule 07.05.2014