長いテキストファイルがあり、特定のパターンが発生するすべての行を表示したい場合は、次のようにします。
grep -n form innsmouth.txt | cut -d : -f1
今、私は一連の数字を持っています(1行に1つの数字)
X軸にオカレンス、y軸に行番号を使用して、2Dグラフィック表現を作成したいと思います。どうすればこれを達成できますか?
これには gnuplot
を使用できます:
primes 1 100 |gnuplot -p -e 'plot "/dev/stdin"'
のようなものを生成します
グラフの外観を思いのままに設定したり、さまざまな画像形式で出力したりできます。
これはR
で行います。インストールする必要がありますが、ディストリビューションリポジトリで利用できるようにする必要があります。 Debianベースのシステムの場合は、
Sudo apt-get install r-base
これによりr-base-core
も含まれるはずですが、含まれない場合はSudo apt-get install r-base-core
も実行してください。 R
をインストールしたら、次の簡単なRスクリプトを作成できます。
#!/usr/bin/env Rscript
args <- commandArgs(TRUE)
## Read the input data
a<-read.table(args[1])
## Set the output file name/type
pdf(file="output.pdf")
## Plot your data
plot(a$V2,a$V1,ylab="line number",xlab="value")
## Close the graphics device (write to the output file)
dev.off()
上記のスクリプトは、output.pdf
というファイルを作成します。私は次のようにテストしました:
## Create a file with 100 random numbers and add line numbers (cat -n)
for i in {1..100}; do echo $RANDOM; done | cat -n > file
## Run the R script
./foo.R file
私が使用したランダムデータでは、次の結果が生成されます。
私はあなたが何をプロットしたいのか完全にはわかりませんが、それは少なくともあなたを正しい方向に向けるべきです。
非常に単純なターミナルプリントアウトで十分であり、逆転した軸で満足できる場合は、以下を検討してください。
seq 1000 |
grep -n 11 |
while IFS=: read -r n match
do printf "%0$((n/10))s\n" "$match"
done
上記のグラフは、seq 1000
の出力でパターン11が発生するたびに、10%のスケールで反転傾向を示しています。
このような:
11
110
111
112
113
114
115
116
117
118
119
211
311
411
511
611
711
811
911
ドットと出現回数を使用すると、次のようになります。
seq 1000 |
grep -n 11 | {
i=0
while IFS=: read -r n match
do printf "%02d%0$((n/10))s\n" "$((i+=1))" .
done; }
...印刷する...
01 .
02 .
03 .
04 .
05 .
06 .
07 .
08 .
09 .
10 .
11 .
12 .
13 .
14 .
15 .
16 .
17 .
18 .
19 .
より多くの作業とtput
を使用して、例のようなAxesを取得できます-\033[A
エスケープを実行する必要があります(または、端末エミュレータと互換性があるので、同等のもの)発生ごとにカーソルを1行上に移動します。
awk
のprintf
がPOSIX-Shell printf
のようにスペースパディングをサポートしている場合は、それを使用して同じことを行うことができます。しかし、私はawk
の使い方を知りません。
PDF出力を持ち、線をプロットするためにNateの答えを強化する(rsvg-convert
):
| gnuplot -p -e 'set term svg; set output "|rsvg-convert -f pdf -o out.pdf /dev/stdin"; plot "/dev/stdin" with lines'
または、パイプを介してstdoutデータをカスタムのpythonスクリプトにリダイレクトできます。これにより、データの解析、前処理、および視覚化のカスタマイズと柔軟性が大幅に向上します。
これは私があなたが意図したとおりに正確に行うために書いたこのチュートリアルです。 リンク