如何使用gnuplot从数据文件中绘制特定子集的数据?

3

我需要在数据文件的一条线上绘制一个单独的点,该文件包含许多其他行和两行。我不知道如何在gnuplot中选择单个行,而不是整个数据文件。请问有什么建议吗?

2个回答

3

如果你想绘制的点不是通过行号来确定的,而是通过某一列中的值来确定的,你可以在using中使用这个技巧:

plot '-' using (($1==0)?$1:1/0):2 with points
-1 1
0  2
1  3
e

这可以用于绘制例如仅具有正x坐标的点(更改为($1>=0)?$1:1/0),或者还可以使用包含行号的伪列$0以比every更灵活地选择特定行:
plot 'data.dat' using (((int($0)%3!=0)?$1:1/0):2 with points

这里我们绘制了3条线中的2条,当然你也可以使用 ($0==LINE)?$1:1/0 只选择其中一条。


1
你需要筛选数据。在gnuplot中,这可以通过关键字every来实现。
由于你没有提供要绘制的文件,因此以下是基于数据文件data.dat的可能提示:
10 62
11 95
12 74
13 33
14 70

你需要在第三行画出点 (12,74),如下所示:
plot 'data.dat' every ::2::2 w p

根据文件结构,这可能会有所不同。

如果您需要多次执行此操作,则最好设置一个变量:

n=2
plot 'data.dat' every ::n::n w p

这样一来,一旦绘制完成,您可以执行以下操作:
n=3; replot
n=10; replot
...

请仔细阅读gnuplot中help every命令。

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