2015-03-16 2 views
1

У меня есть этот ирис данные ...Gnuplot: построение точек с данными радужной оболочки цвета на основе

5.1  3.5  1.4  0.2  Iris-setosa 
4.9  3  1.4  0.2  Iris-setosa 
7  3.2  4.7  1.4  Iris-versicolor 
6.4  3.2  4.5  1.5  Iris-versicolor 
7.1  3  5.9  2.1  Iris-virginica 
6.3  2.9  5.6  1.8  Iris-virginica 
. 
. 
. 

и я получил график с использованием GNUPLOT (участок 'с: \ iris.data')

Но я желательные точки с цветовой группой по 5-й колонке (радужная оболочка, радужная оболочка, ирис-виргиния)

Например. , ,

ирис-setosa = цвет красный, ирис-лишай = цвет зеленый, ирис-virginica = цвет синий

Как я могу получить цветной график?

Ответьте. , , ,

ответ

1

Меняйте цвета с числовыми индексами, например, так:

5.1  3.5  1.4  0.2  0 
4.9  3  1.4  0.2  0 
7  3.2  4.7  1.4  1 
6.4  3.2  4.5  1.5  1 
7.1  3  5.9  2.1  2 
6.3  2.9  5.6  1.8  2 

Простой поиск и замену сценарий должен быть в состоянии сделать это для вас.

Затем вы можете использовать Gnuplot's linecolor palette, например. следующим образом:

plot "iris.data" u 1:2:5 w p lc palette 

Чтобы настроить цвета, используемые, как это:

set palette defined (0 "red", 1 "green", 2 "blue") 

Обратите внимание, что в то время как я решил использовать точные показатели здесь, определение палитры относительна, и я мог бы также использоваться:

set palette defined (-11 "red", -2 "green", 7 "blue") 
1

Если вы хотите сохранить строковые значения в файле данных, вы можете создать своего рода перекодировки стола с Gnuplot, используя несколько строк функции, которые Gnuplot предоставляет (см также Different coloured bars in gnuplot bar chart? для подобного случая использования):

IrisColors = 'Iris-setosa Iris-versicolor Iris-virginica' 
index(s) = words(substr(IrisColors, 0, strstrt(IrisColors, s)-1)) + 1 

set style fill solid noborder 
set linetype 1 lc rgb 'red' 
set linetype 2 lc rgb 'green' 
set linetype 3 lc rgb 'blue' 

plot 'iris.data' using 1:2:(index(strcol(5))) linecolor variable 

Обратите внимание, что сравнение строк чувствительно к регистру, и что вы не можете использовать строки с пробелами в виде отдельных клавиш.