gnuplot:在一列中绘制基于颜色的值的点

Tom*_*art 10 plot graph gnuplot

我想绘制分类结果并标记真正的类.所以,基本上我需要的是为字符串列中的每个点指定颜色.

数据集看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)

在原始数据集中,我用数字替换了字符串标签,因为我不知道如何使用gnuplot中的字符串.有没有办法将字符串映射到颜色?

目前输出如下: gnuplot着色点

但是我不喜欢渐变调色板,因为在这种情况下它没有意义.我更喜欢普通的传奇,只有一种颜色和类的名称.知道怎么做吗?

Wol*_*tan 5

你如何做到这一点的方法是使用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
Run Code Online (Sandbox Code Playgroud)

和这个脚本:

set pointsize 3
plot "< awk '{if($3 == \"red\") print}' Data.csv" u 1:2 t "red" w p pt 2, \
     "< awk '{if($3 == \"green\") print}' Data.csv" u 1:2 t "green" w p pt 2, \
     "< awk '{if($3 == \"blue\") print}' Data.csv" u 1:2 t "blue" w p pt 2
Run Code Online (Sandbox Code Playgroud)

你得到这个情节:

在此输入图像描述

awk做的只是检查数据文件的第三个参数,如果它有一些值,则只打印该行:如红色或蓝色.

您还可以使用渐变去除调色板.

通过使用gnuplot 迭代可以进一步改进脚本.