Пользовательская легенда (или текст) gnuplot

У меня есть файл с 3 столбцами, первые 2-это позиция x y, а третий я использую его для определения цвета, поэтому у меня есть что-то вроде этого:

set palette model RGB defined ( 1 'black', 2 'blue', 3 'green', 4 'red')
unset colorbox

plot "file" u 2:1:3 w points pt 14 ps 2 palette, "file2" u 2:1:3 w points pt 14 ps 2        palette 

теперь вопрос: возможно ли иметь правильную легенду с такой точкой и цветом?. Поскольку точки будут иметь разные цвета (в соответствии с палитрой), я хочу указать, что означает каждый цвет в легенде.

единственным решением, о котором я думал, было написать где-то в сюжете текст с характер точки (в данном случае pt 14) и укажите цвет... но разве это не правильное решение?

поэтому, пожалуйста, помогите!

2 ответов


для этого нет возможности,вам нужно немного поиграть. Вот YAGH (еще один gnuplot hack);)

предполагая, что ваши значения равноудалены, вы можете использовать '+' специальное имя файла с labels черчение стиль.

чтобы показать только пользовательский ключ, рассмотрим следующий пример:

labels="first second third fourth"
set xrange[0:1] # must be set for '+'
set yrange[0:1]
set samples words(labels)   # number of colors to use
key_x = 0.8     # x-value of the points, must be given in units of the x-axis
key_y = 0.8
key_dy = 0.05
set palette model RGB defined ( 1 'black', 2 'blue', 3 'green', 4 'red')
unset colorbox
plot '+' using (key_x):(key_y + *key_dy):(word(labels, int(+1))):0 \
    with labels left offset 1,-0.1 point pt 7 palette t ''

это дает (с 4.6.4):

enter image description here

как set samples не влияет на графики данных, вы можете интегрировать это прямо в вашем сюжете команда:

...
unset key
plot "file" u 2:1:3 w points pt 14 ps 2 palette, \
     "file2" u 2:1:3 w points pt 14 ps 2 palette, \
     '+' using (key_x):(key_y - *key_dy):(word(labels, int(+1))):0 \
         with labels left offset 1,-0.1 point pt 14 ps 2 palette

но вам нужно установить правильный xrange, yrange и значения key_x, key_y и key_dy.

это не самый интуитивный способ, но он работает:)


У меня есть альтернативное решение опубликовано здесь: использование Gnuplot для построения точечных цветов условно

по существу вы строите один раз без записи легенды, а затем делаете фиктивные графики (без данных) для каждого цвета/метки точки.