我在某个文本文件中有数据,可以说10000行和2列。我知道我可以通过plot "filename.txt" using 1:2 with lines
轻松地绘制它。然而我想要的只是绘制让我们说1000到2000的行或任何其他合理的选择。是否可以轻松地做到这一点?非常感谢你提前。
答案 0 :(得分:76)
gnuplot中的"every" command似乎正是您所寻找的:
plot "filename.txt" every ::1000::2000 using 1:2 with lines
或者,预处理文件以选择您感兴趣的行。例如,使用awk:
awk "NR>=1000 && NR<=2000" filename.txt > processed.txt
然后在现有的gnuplot命令/脚本中使用生成的“processed.txt”。
答案 1 :(得分:29)
简单:
plot "<(sed -n '1000,2000p' filename.txt)" using 1:2 with lines
答案 2 :(得分:9)
您可以使用伪列0来减少对外部实用程序的依赖(例如,如果您的系统没有安装它们)。
请参阅help plot datafile using pseudocolumn
尝试类似:
LINEMIN=1000
LINEMAX=2000
#create a function that accepts linenumber as first arg
#an returns second arg if linenumber in the given range.
InRange(x,y)=((x>=LINEMIN) ? ((x<=LINEMAX) ? y:1/0) : 1/0)
plot "filename.txt" using (InRange($0,$1)):2 with lines
(在Gnuplot 4.4.2,Linux上测试)
答案 3 :(得分:1)
Gnuplot忽略NaN值。这对我来说适用于x坐标的指定范围。不知道如何指定行范围。
cutoff(c1,c2,xmin,xmax) = (c1>=xmin)*(c1<=xmax) ? c2 : NaN
plot "data.txt" u 1:(cutoff(($1),($2),1000,2000))
答案 4 :(得分:0)
我会推荐一些命令行工具,例如sed
,grep
或bash
。在你的例子中
head -n 2000 ./file.data > temp.data
和
tail -n 1000 temp.data > temp2.data
可能会奏效。但是没有测试过这么大的数字是否适用于头尾。