我有这个虹膜数据......
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 =颜色为蓝色
我如何获得彩色图表?
请回答。 。 。 。
答案 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
请注意,字符串比较区分大小写,并且您不能将带有空格的字符串用作单个键。