1

私が持っているいくつかのデータからヒストグラムを作成しようとしていますが、頻度やビンなどを把握するためにテーブルを設定して、プロットする代わりにヒストグラムに関する情報を特定のファイルに入れます。たとえば、私のデータが

11
12 
11
11
15
12
10

次に、次のようなものを取得します

10 1
11 3
12 2 
15 1 

ここで、2 列目は各エントリの頻度を示します。しかし、私が気付いたのは、gnuplot がこのファイルを作成すると、上記のファイルを取得する代わりに、

10 1
11 3
12 2 
15 1
10 1

つまり、最初のエントリがテーブルの最後で再び繰り返されます。ヒストグラム、つまりこのファイルだけをプロットしたい場合は、問題ありません。しかし、私がする必要があるのは、対数スケールで頻度をプロットすることです。これを修正しない場合、つまり、毎回手動でファイルをロードしてから最後の行を取り除くと、残りの傾向から離れた奇妙な点がプロットされます私のデータの..なぜこれが起こるのか、それをオフにする方法があるのだろうかと思っていましたか? 私が使用するコードは次のとおりです。

set table 'tableavalanchesizeGSA'
bw = 50.0
bin(x,s)=s*int(x/s)
plot 'avalanche_size_GSA.dat' using (bin($1,bw)+bw/2.0):(1.0/2048000) smooth frequency    with points
unset table
set logscale y
plot 'tableavalanchesizeGSA' with points title ''

なぜこれが起こっているのか誰にも分かりますか?そして、それを自動的にオフにする方法があるとしたら?

4

1 に答える 1

1

この動作はgnuplot のバグです。このバグを回避するheadには、出力ファイルに書き込む前にテーブル出力をパイプします。

set output "| head -n -2 > tableavalanchesizeGSA"
set table
bw = 50.0
bin(x,s)=s*int(x/s)
plot 'avalanche_size_GSA.dat' using (bin($1,bw)+bw/2.0):(1.0/2048000) smooth frequency with points
unset table

gnuplot は最後に空行を書き込むため、最後の 2 行をスキップする必要があります。set outputまた、明示的に使用する必要があります。出力を で設定すると、パイピングが機能しないようset table "| head ..."です。

于 2013-08-21T08:56:21.320 に答える