如何在GNUplot中绘制特定行

12

我有一个双列文件,其中有1000000个条目,即1000000行,但我不想绘制所有数据,我只想绘制每100行的点。如何在gnuplot中实现这一点?此外,在gnuplot中是否可以指定要绘制的特定行?


你可以在gnuplot中使用awk。如果您能更详细地解释您的问题,我很乐意为您解释。 - tommy.carstensen
1个回答

28

你至少有两个选择。首先,查看help datafile every的文档。

plot 'datafile' every 100 using 1:2 

另一个选项是使用伪列0 (help datafile using pseudo),结合三元运算符 (help ternary) 和 gnuplot 静默忽略未定义数字的知识来过滤行:

plot 'datafile' u ( ((int($0)%100)==0)? $1 : 1/0 ):2

如果使用宏,您可以使这个问题更易于理解:

set macro
line_number='int($0)'
plot 'datafile' u ( ( ( @line_number % 100 ) == 0 ) ? $1 : 1/0 ) : 2

请注意,我之所以包含第二个选项,是因为您可以(原则上)使用此选项从数据文件中选择非常奇怪的行数(例如1,100,1000,10000),而使用every则无法实现此操作。

plot 'datafile' u ( ((@line_number == 1 || @line_number == 100 || @line_number == 1000 ) $1:1/0)):2

还可以查看这个问题的答案。


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