たとえば、10000行2列のテキストファイルにデータがあります。 plot "filename.txt" using 1:2 with lines
で簡単にプロットできることを知っています。しかし、私が望むのは、単にプロットすることです。たとえば、1000から2000までの行またはその他の適切な選択です。簡単にできますか?事前にどうもありがとうございました。
より簡単:
plot "<(sed -n '1000,2000p' filename.txt)" using 1:2 with lines
Gnuplotの "every"コマンド が探しているもののようです:
plot "filename.txt" every ::1000::2000 using 1:2 with lines
または、ファイルを前処理して、目的の行を選択します。たとえば、awkを使用する場合:
awk "NR>=1000 && NR<=2000" filename.txt > processed.txt
次に、既存のgnuplotコマンド/スクリプトで結果の「processed.txt」を使用します。
おそらく、疑似列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でテスト済み)
GnuplotはNaN値を無視します。これは、x座標の指定された範囲で機能します。ただし、行範囲の指定方法がわかりません。
cutoff(c1,c2,xmin,xmax) = (c1>=xmin)*(c1<=xmax) ? c2 : NaN
plot "data.txt" u 1:(cutoff(($1),($2),1000,2000))
sed
、grep
、_bash
などのコマンドラインツールをお勧めします。あなたの例では
head -n 2000 ./file.data > temp.data
そして
tail -n 1000 temp.data > temp2.data
動作する可能性があります。しかし、そのような大きな数値が頭と尾で機能するかどうかはテストしていません。