如何使用gnuplot绘制数据文件中的特定数据子集?
我需要从数据文件中的一行绘制一个点,它有许多其他的行和两行。我不知道如何在gnuplot中选择一行,而不是整个数据文件。有什么建议吗?你必须过滤掉。在gnuplot中,这是通过关键字如何使用gnuplot绘制数据文件中的特定数据子集?,gnuplot,Gnuplot,我需要从数据文件中的一行绘制一个点,它有许多其他的行和两行。我不知道如何在gnuplot中选择一行,而不是整个数据文件。有什么建议吗?你必须过滤掉。在gnuplot中,这是通过关键字every完成的 由于您没有提供要在此处打印的文件,因此基于此数据文件data.dat,可能会有提示: 10 62 11 95 12 74 13 33 14 70 在第三条直线(12,74)处绘制点,如下所示: plot 'data.dat' every ::2::2 w p 根据文件结构,这可能会有所不同 如果
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
命令如果要绘制的点不是以行号为特征的,而是以一列中的某个值为特征的,您可以在中使用此技巧
:
plot '-' using (($1==0)?$1:1/0):2 with points
-1 1
0 2
1 3
e
这可用于绘制,例如仅具有正x坐标的点(更改为($1>=0)?$1:1/0
),或使用包含行号的$0
伪列,以比每行更通用的方式选择特定行:
plot 'data.dat' using (((int($0)%3!=0)?$1:1/0):2 with points
这里我们绘制了3行中的2行,当然您也可以使用($0==line)?$1:1/0
仅选择一行