如何在Gnuplot中指示具有不同点类型的标签?

时间:2011-02-12 22:11:17

标签: gnuplot

假设我有数据我想在一个文件“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

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

我可以使用“lc变量”并用颜色替换标签列,但我正在使用的文件有太多不同的标签可供我轻松完成。

1 个答案:

答案 0 :(得分:2)

我认为没有办法直接这样做。

然而,一个简单的解决方法是使用gnuplot的接口来awk。然后,您可以绘制3个单独的图表,每个图表一个。

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"

由于每一行之间的唯一区别是动物的名称,你可以用更好的方式编写脚本,但是你明白了,

汤姆