Gnuplot:使用基于颜色的虹膜数据绘制点

时间:2015-03-16 07:17:14

标签: gnuplot classification svm libsvm

我有这个虹膜数据......

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获得图表(plot' c:\ iris.data')

但是我希望用第5列的颜色组(iris-setosa,iris-versicolor,iris-virginica)点数

例如。 。 。

iris-setosa =颜色为红色,iris-versicolor =颜色为绿色,iris-virginica =颜色为蓝色

我如何获得彩色图表?

请回答。 。 。 。

2 个答案:

答案 0 :(得分: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的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 :(得分: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

请注意,字符串比较区分大小写,并且您不能将带有空格的字符串用作单个键。