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. Есть ли способ, как сопоставить строку с цветами?
в настоящее время вывод выглядит следующим образом:
однако мне не нравится палитра градиентов, потому что в этом случае это не имеет смысла. Я бы предпочел обычную легенду с одним цветом и именем класса. Есть идеи, как это сделать?
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
вы получите этот сюжет:
то, что делает awk, просто проверяет третий параметр файла данных и печатает только строку, если она имеет какое-то значение: например, красный или синий.
вы также избавитесь от палитры с градиентом.
сценарий может быть дополнительно улучшена с помощью помощью gnuplot итераций.
цветовая палитра может использоваться для получения любого цвета точки (для отдельных точек)
plot file using 1:2:3 with points palette
теперь настройте палитру, которая дает вам желаемую цветовую гамму. Вы можете установить палитру для вычисления цвета, например, с помощью цветовой модели HSV или посмотреть веб-сайт gnuplot demos.
просто для полноты картины, посмотрите на последний пример на gnuplot pm3d цвета демо-страница:
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