Как добавить цвета к каждой точке в gnuplot из файла точек

Чтение этого и < ответ href="https://stackoverflow.com/questions/8717805/vary-point-color-in-gnuplot-based-on-value-of-one-column">этот я понял, что изменение цвета каждой точки возможны, но:

  • он должен быть определен с помощью set palette model RGB defined (), поэтому, если я хочу 100 разных цветов, мне придется определить их все

  • цвет точки указывается непосредственно перед ее рисованием.

Мой вопрос в том, есть ли способ избежать всего вышеперечисленного, например, изменить мой файл данных следующим образом:

x y z R   G   B
1 2 3 0   255 255 
5 6 2 255 0   0

И есть ли соответствующая точка, нарисованная указанным цветом?


person Alexandru Barbarosie    schedule 23.10.2014    source источник
comment
См. также мой ответ на создание переменных цветов с десятичными числами.   -  person Christoph    schedule 24.10.2014


Ответы (1)


Попробуйте следующее на gnuplot 4.6+:

rgb(r,g,b) = 65536 * int(r) + 256 * int(g) + int(b)
plot "data.dat" using 1:2:(rgb($3,$4,$5)) with points lc rgb variable

Из руководства:

1.17.1.3 переменная rgbcolor

variable сообщает программе, что нужно считывать информацию о цвете RGB для каждой строки в файле данных. Для этого требуется соответствующий дополнительный столбец в спецификаторе using. Дополнительный столбец интерпретируется как 24-битная упакованная тройка RGB. Если значение предоставляется непосредственно в файле данных, проще всего указать его в виде шестнадцатеричного значения (см. «rgbcolor»). Кроме того, спецификатор using может содержать выражение, оценивающее 24-битный цвет RGB, как в примере ниже. Цвета текста задаются аналогичным образом с помощью переменной tc rgbcolor.

person Fabio A. Correa    schedule 24.10.2014
comment
Если бы вы были так любезны и расширили свой ответ еще на одну вещь, я рисую не точки, а линии, что произойдет, если я изменю points на lp, так это то, что линия будет иметь цвет точки, с которой я начинаю, есть ли способ, которым я мог бы сделать цвет линии другим / цвет, который будет переводиться из начала в конец. Источник, где я мог бы прочитать об этом, также был бы хорош. - person Alexandru Barbarosie; 24.10.2014
comment
К сожалению, для этого нет прямого решения; каждый сегмент линии будет нарисован цветом; градиенты нуждаются в косвенном, сложном подходе. См. здесь и здесь. - person Fabio A. Correa; 24.10.2014