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

Gnuplot: plotting points with color based iris data

我有这个虹膜数据...

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 得到了图形(绘图 'c:\iris.data')

但我想要第 5 列颜色组的点(鸢尾花、鸢尾花、鸢尾花)

例如。 . .

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

如何获得彩色图表?

请回答。 . . .

用数字索引替换您的颜色,例如:

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")

如果您想在数据文件中保留字符串值,可以使用 gnuplot 提供的一些字符串函数构造某种查找-table(另请参阅 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

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