我该如何在Gnuplot中使用不同的点类型表示标签?

3

假设我有一些数据想要在文件“animals.txt”中绘制:

cat 5.2 1.0
cat 5.4 1.3
cat 5.2 1.2
dog 3.8 1.1
dog 3.5 1.5
dog 3.6 1.3
giraffe 1.3 9.7
giraffe 1.5 9.0
giraffe 1.4 9.9

我可以使用以下代码生成带标签的散点图:

plot "animals.txt" u 2:3:1 w labels

我也可以使用类似以下方式改变每个点的样式:

plot "animals.txt" u 2:3 w points pointtype 3

不使用可能重叠的标签,是否可以让点使用不同的点类型或颜色表示每个类别?(例如,“猫”将以红色用点类型3表示,“狗”将以蓝色用点类型4表示,等等。)

我可以使用“lc variable”并用颜色替换标签列,但是我正在处理的文件具有太多不同的标签,因此很难轻松完成。

1个回答

2
我不认为有直接的方法来完成这个任务。然而,一个简单的解决方案是使用 gnuplot 的 awk 接口。您可以为每个动物绘制三个单独的图表。
plot "<awk '{ if($1 == \"cat\") print $2,$3  }' animals.dat" u 1:2 w points title "cat", \
     "<awk '{ if($1 == \"dog\") print $2,$3  }' animals.dat" u 1:2 w points title "dog", \
     "<awk '{ if($1 == \"giraffe\") print $2,$3  }' animals.dat" u 1:2 w points title "giraffe"

由于每行之间唯一的区别就是动物的名称,你可能可以用更好的方式编写脚本,但是你已经理解了这个思路。

汤姆


这只是一个天才的东西。 - darxsys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接