2014-11-11 4 views
3

Есть ли простой способ построения объекта (2d), заполненного спектром палитры?

Я только начинаю читать о палитрах и pm3d в gnuplot на этой неделе. И я немного смущен.Объекты, палитра и pm3d

Есть ли простой способ построения объекта, например прямоугольника, который заполнен цветами в спектре палитры, т. Е. Объект со значением fillcolor, заданный спектром палитры? Или мне придется использовать splot?

Я не мог найти что-нибудь в Интернете, ни какой-либо вопрос об этом здесь ...

+0

Вы имеете в виду объект, подобный прямоугольнику с заполнением градиентом, например, в powerpoint? Я не думаю, что это особенность gnuplot - вам придется записывать 2D-данные или функцию, которая имеет желаемый градиент (что-то вроде 'set pm3d map; splot x'). – andyras

+0

Да, точно так же, как в powerpoint! После отличного времени поиска в Интернете, я думаю, что это тоже не особенность gnuplot ... Не могли бы вы дать ответ, просто объяснив, как это сделать? Спасибо за прочтение! – Larara

ответ

3

Если вы хотите PowerPoint-эск наполненного градиента, вы можете взломать его в GNUPLOT, имея Multiplot, где один из участки представляют собой небольшой прямоугольный SPLOT:

#!/usr/bin/env gnuplot 

set terminal pngcairo enhanced rounded 
set output 'gradient.png' 

set samples 1000 # for smooth gradient 

set multiplot 

# plot actual data 
plot sin(x) 

# set up plot for a rectangle with no decoration 
set pm3d map 
unset border 
unset tics 
unset key 
unset colorbox 
set margin 0 

set size 0.2,0.3 

# creates a left-to-right gradient 
set origin 0.6,0.6 
splot x 

# creates a top-to-bottom gradient 
set origin 0.3,0.3 
splot y 

# creates a bottom-left to top-right gradient 
set origin 0.3,0.6 
splot x + y 

# and so on 
set origin 0.6,0.3 
splot x - y 

unset multiplot 

результат:

enter image description here

Для получения дополнительного вдохновения, см: http://gnuplot.sourceforge.net/demo/pm3d.html http://www.gnuplotting.org/tag/colormap/

+0

Отличный ответ! Это, безусловно, помогло мне: D – Larara

0

Поиграв немного с Gnuplot, я нашел еще один способ построения градиентные заполнения прямоугольника, если у вас есть файл с данными и не использует multiplot.

Так что если у вас есть файл с именем данные с данными, как это:

x_i y_i 

на г-го столбца, вы можете сделать это в Gnuplot:

set view map 
set palette 
set pm3d explicit map 
splot "data" using 1:2:(1) with lines lw 2 lc rgb "your_color", (x<x_min || x>max) || (y<y_min || y>y_max) ? 1/0 : x with pm3d 

Важным является explicit параметр при настройке pm3d: он цвета с цветами палитры, когда вы даете команду with pm3d. Таким образом, вы можете покрасить свои данные своим любимым цветом. Третий аргумент using - это просто z-значение, и в этом случае это 1. Значения x_min, x_max, y_min, y_max - это координаты вершин прямоугольника.

В качестве примера, у меня был файл, как этот

2*pi*i/500 sin(2*pi*/500) 

где pi = 3,1415 ... С x_min=1, x_max=3, y_min=-0.7 и y_max=0.1, я получил этот график:

Output of the example above

Конечно, это может быть довольно трудоемким по сравнению с методом, данным @andryas, потому что мы должны написать это длинное выражение с тернарной операцией rator, но для тех, кто не знаком с multiplot, это тоже работает.

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