gnuplot: построение точек с цветными значениями в одном строковом столбце и отображение строки в легенде - PullRequest
10 голосов
/ 31 января 2012

Я хотел бы построить результаты классификации и отметить истинные классы. Итак, в основном мне нужно назначить цвет для каждой точки на основе значения в столбце строки.

набор данных выглядит следующим образом:

5,1 3,5 1,4 0,2 Iris-setosa

Я закончил со скриптом, следующим решением (благодаря ответу здесь: Как сделать точки одним цветом, когда третий столбец равен нулю, и другим цветом в Gnuplot? )

set palette model RGB defined (0 "red",1 "blue", 2 "green")
plot 'iris.data' using 1:2:5 notitle with points pt 2 palette

в исходном наборе данных я заменил строковые метки числами, потому что я не знаю, как работать со строками в gnuplot. Есть ли способ сопоставить строку с цветами?

В настоящее время вывод выглядит так: gnuplot coloring points

Однако мне не нравится градиентная палитра, потому что в этом случае она не имеет смысла. Я бы предпочел нормальную легенду с одним цветом и названием класса. Есть идеи, как это сделать?

Ответы [ 2 ]

5 голосов
/ 01 февраля 2012

Способ сделать это можно с помощью awk .

Используя файл данных Data.csv:

5.4452 4.6816 blue
1.2079 9.4082 red
7.4732 6.5507 red
2.3329 8.2996 red
3.4535 2.1937 green
1.7909 2.5173 green
2.5383 7.9700 blue

и этот скрипт:

set pointsize 3
plot "< awk '{if($3 == \"red\") print}' Data.csv" u 1:2 t "red" w p pt 2, \
     "< awk '{if($3 == \"green\") print}' Data.csv" u 1:2 t "green" w p pt 2, \
     "< awk '{if($3 == \"blue\") print}' Data.csv" u 1:2 t "blue" w p pt 2

вы получаете этот график:

enter image description here

Что делает awk, это просто проверяет третий параметр файла данных и печатает только строку, если она имеет какое-то значение: как красный или синий.

Вы также избавитесь от палитры с помощью градиента.

Сценарий можно улучшить, используя gnuplot iterations .

2 голосов
/ 17 февраля 2014

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

plot file using 1:2:3 with points palette

Теперь настройте палитру, которая дает желаемую цветовую шкалу.Вы можете настроить палитру для вычисления цвета, например, с помощью цветовой модели HSV или взглянуть на демонстрационный веб-сайт gnuplot.

Только для полноты взгляните на последний пример gnuplot pm3dдемонстрационная страница цветов :

color bar with distinct colors in gnuplot

theta(x) = x<0 ? 0 : 1
r(x) = 4*x*(1-theta(x-0.25))
g(x) = 0.5*theta(x-0.25)*(1-theta(x-0.5))
b(x) = x
set palette model RGB functions r(gray),g(gray),b(gray)
set title "set palette model RGB functions\n4*x*(1-theta(x-0.25)), 0.5*theta(x-0.25)*(1-theta(x-0.5)), x"
splot f(x)enter code here
...