Gnuplot: палитра загрузки?

Мне, конечно, не хватает чего-то очень очевидного, но как изменить основные цвета, используемые Gnuplot (которые можно увидеть с помощью команды test)?

Я хочу определить некоторые цвета, а затем иметь возможность использовать их в качестве основных цветов с linecolor 1 и т. Д.

Вот пример, который, насколько я понимаю, должен переопределять цвета - но это не так:

set palette defined (0 '#A6CEE3',\
                     1 '#1F78B4',\
                     2 '#B2DF8A',\
                     3 '#33A02C',\
                     4 '#FB9A99',\
                     5 '#E31A1C',\
                     6 '#FDBF6F',\
                     7 '#FF7F00' )
set style arrow 1 \
    nohead \
    linecolor 1 \
    linewidth 2
set style arrow 2 \
    nohead \
    linecolor 2 \
    linewidth 4
set style line 3 \
    linetype 1 \
    linewidth 3 \
    linecolor 3
set xrange [-10:10]
set yrange [-2:10]
set arrow from 1,-2 to 1,10 arrowstyle 1
set arrow from -10,3 to 10,3 arrowstyle 1
plot sin(x) with lines linestyle 3, \
    5 with vectors arrowstyle 2

Цвета взяты из парного палитра, а на график Gnuplot по-прежнему использует цвета по умолчанию (их можно увидеть на фоне, который является частью вывода команды test).


person A S    schedule 10.02.2019    source источник


Ответы (2)


Кажется, что палитры используются для преобразования непрерывного аналогового значения в плавный выбор цвета. Вам нужно только «индексировать» палитру в определенных точках, которые вы указали, используя дискретные значения 0, 1 ... 7 для перехода к цвету. Похоже, это можно сделать, если использовать colourspec в форме linecolor palette cb index. Сначала вам нужно установить диапазон «цветовой шкалы». Пытаться

set cbrange [0:7]
set style arrow 1 \
    nohead \
    linecolor palette cb 1 \
    linewidth 2
set style arrow 2 \
    nohead \
    linecolor palette cb 2 \
    linewidth 4
set style line 3 \
    linetype 1 \
    linewidth 3 \
    linecolor palette cb 3

Добавьте unset colorbox, чтобы не отображать диапазон цветов с правой стороны.

person meuh    schedule 10.02.2019
comment
Да, я знаю о rgbcolor, но именно в этом суть: вместо объявления HEX в каждом стиле я думал упростить процедуру и просто переопределить цвета 0-7. Я имею в виду, что это более гибкий способ, и после того, как вы его определите, вам не нужно думать обо всех этих #...... :) Но все равно спасибо. - person A S; 10.02.2019
comment
Я отредактировал свой ответ альтернативой, используя индексы. - person meuh; 10.02.2019
comment
Теперь это работает, спасибо! :) (Для записи, конечно, можно также использовать переменные: вместо установки палитры просто определите несколько переменных, my_fancy_color = '#A6CEE3', а затем используйте их со свойством rgb следующим образом: linecolor rgb my_fancy_color1) - person A S; 10.02.2019

Возможно, я неправильно понял исходный вопрос, но я подумал, что это был запрос информации о том, как изменить набор цветов, используемых основными типами линий с 1 по N, как показано командой "test". Необходимые команды:

set linetype 1 lc '#A6CEE3'
set linetype 2 lc '#1F78B4'
set linetype 3 lc '#B2DF8A'
set linetype 4 lc '#33A02C'
set linetype 5 lc '#FB9A99'
set linetype 6 lc '#E31A1C'
set linetype 7 lc '#FDBF6F'
set linetype 8 lc '#FF7F00'
set linetype cycle 8

Это становится новой последовательностью цветов, используемой для создания последовательных элементов графика и показываемых командой "test". Последняя строка сообщает ему, что необходимо перезапустить ту же последовательность цветов на типе линий 9 (и 17, 25, ...).

person Ethan    schedule 10.02.2019
comment
Спасибо! Вы абсолютно правы, а я был просто глуп, извините :). - person A S; 11.02.2019