2015-06-11 2 views
3

Я хотел бы показать значения функции из двух переменных, например x+y, как изображение «растрового изображения». Так что я попытался это, основываясь на http://gnuplot.sourceforge.net/demo/heatmaps.html:Плавное отображение градиента функции двух переменных (xy) в gnuplot?

# Color runs from white to green 
set palette rgbformula -7,2,-7 
set cbrange [-5:5] 
set cblabel "Value" 
unset cbtics 
set xrange [-4.5:4.5] 
set yrange [-4.5:4.5] 
set view map 
splot x+y with image 

... но я ничего не получаю:

$ gnuplot -persist test.gp 
"test.gp", line 45: warning: Image grid must be at least 2 x 2. 

test.png

Так как я могу получить "пиксель", скажем, х = -2, y = -2 для окрашивания в соответствии с x+y = -4 на cbrange?


Edit: получил, что:

set palette rgbformula -7,2,-7 
set cbrange [-5:5] 
set cblabel "Value" 
unset cbtics 
set xrange [-4.5:4.5] 
set yrange [-4.5:4.5] 
set pm3d 
unset surface 
set view map 
splot x+y 

Выходов:

test.png


Но - сказать, что я хочу градиент в этой области, экспортированный как "гладкий" градиент (без осей, тиков, знаков любого вида) на большом PNG, скажем 3000х2000 пикселей; что было бы лучшим способом добиться этого?

ответ

2

Начиная с вашего редактирования: вы просто деактивируете все. Значение:

unset colorbox 
unset xtics 
unset ytics 
set border 0 

Затем идентификатор создания списка команд:

set palette rgbformula -7,2,-7 
set cbrange [-5:5] 
unset cblabel 
unset cbtics 
set xrange [-4.5:4.5] 
set yrange [-4.5:4.5] 
set pm3d 
unset surface 
set view map 

unset colorbox 
unset xtics 
unset ytics 
set border 0 

splot x+y 

Вы получаете только градиент enter image description here

EDIT: Для того, чтобы улучшить шаг градиента и создать более гладкую image вам нужно использовать pm3d's interpolate.

set pm3d interpolate 4,4 

enter image description here

+0

Спасибо за это, @ctheo - но здесь я заинтересован в получении "гладкий" градиент; здесь также на вашем изображении градиент показан как «ящики». Я бы идеально хотел, чтобы каждый пиксель в экспортированном изображении был его собственным оттенком зеленого (согласно формуле). Это возможно? – sdaau

+1

@sdaau теперь я получаю ваш запрос. Отредактировал ответ. Вы можете попробовать параметры «интерполировать», чтобы узнать свой предпочтительный градиент. – ztik

+1

Для удаления всех полей используйте также 'set lmargin на экране 0; установить rmargin на экране 1; установить tmargin на экране 1; set bmargin на экране 0' – Christoph

Смежные вопросы