3

我有一个包含多列的数据文件,前两列表示位置,其他列表示其他属性(例如从该点发送的项目数)。例如:

1  1  1  57.11
2  1  2  62.40
3  4  1  31.92

我想要做的是绘制位置上的点,但使用其他列中的值来改变点的类型和大小(例如)。但是我似乎无法找到一种方法来引用图中的列。我知道“变量”的使用,但我找不到使用多个变量的方法。

我想要的是如下内容:

plot "mydata" using 1:2 notitle with points pt ($3) ps ($4/10)

以便 pt 和 ps 使用分别取自第三和第四列的每个点的值。

这在gnuplot中甚至可能吗?有某种解决方法吗?

4

1 回答 1

5

您应该能够使用关键字variable来执行以下操作:

plot 'datafile' using 1:2:3:4 w points ps variable lc variable

或者可能将值映射到调色板:

plot 'datafile' using 1:2:3:4 w points ps variable lc palette

关键字变量和/或调色板导致 gnuplot 从文件中读取属性,并且它们都需要通过using. 当然,所有使用 using 的常用内容都适用——您可以将转换应用于数据等:

plot 'datafile' using 1:2:3:($4+32.) w points ps variable lc palette

我不记得第三列是这里的点大小还是颜色,我现在没有时间玩弄它来弄清楚。您可以进行实验并发表评论,或者我会在有时间时再回来添加更新。


其他一些属性(例如pointtype)不能很容易地更改为使用variable. 最简单的方法是使用带有 gnuplot 三元运算符的过滤器。

首先,编写一个函数,该函数根据数据文件的 1 列中的数据返回一个点类型:

my_point_type(x) = x   

这里我使用了一个简单的标识函数,但它可以是任何东西。现在,您可以遍历您想要的点类型(此处为 1-10),为每个点类型绘制一个图:

plot [for PT=1:10] 'datafile' u 1:((my_point_type($3) == PT) ? $2:NaN) with points pt PT

这假设具有点类型信息的列是第 3 列,而第 2 列包含位置信息。这也可以与我上面演示的内容结合使用。

于 2013-01-19T14:39:28.583 回答