gnuplot: построение точек со значениями цвета в одном столбце

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

dataset выглядит так:

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 ответов


способ, как вы могли бы сделать это, используя 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( == \"red\") print}' Data.csv" u 1:2 t "red" w p pt 2, \
     "< awk '{if( == \"green\") print}' Data.csv" u 1:2 t "green" w p pt 2, \
     "< awk '{if( == \"blue\") print}' Data.csv" u 1:2 t "blue" w p pt 2

вы получите этот сюжет:

enter image description here

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

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

сценарий может быть дополнительно улучшена с помощью помощью gnuplot итераций.


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

plot file using 1:2:3 with points palette

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

просто для полноты картины, посмотрите на последний пример на 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