我有一个包含多个列的数据文件,前两个表示位置,其他表示其他属性(例如从此点发送的项目数)。例如:
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中甚至可能吗?是否有某种解决方法?
答案 0 :(得分:4)
您应该能够使用关键字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
读取额外的列。当然,使用的所有常用内容都适用 - 您可以将变换应用于数据等:
plot 'datafile' using 1:2:3:($4+32.) w points ps variable lc palette
我不记得我的头顶是否第3列将是这里的点数或颜色,我现在没时间玩它来解决它。您可以进行试验并发表评论,或者当我有时间并添加更新时,我会回到此处。
使用pointtype
无法轻易更改某些其他属性(例如variable
)。最简单的方法是使用带有gnuplot三元运算符的过滤器。
首先,编写一个函数,该函数根据数据文件的1列中的数据返回一个pointtype:
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
这假定带有pointtype信息的列是第3列,第2列保存位置信息。这也可以与我上面演示的内容结合起来。