#概要
測定等で得たデータをgnuplotで描画する上で便利だと思ったstats
についてまとめました
前回の記事↓
【gnuplot小ワザまとめ】グラフを描画する際の位置指定方法(margin)
#本題
読み込んだデータファイルをgnuplotで描画するときに、データの最大/最小に合わせて軸の範囲を自動的に変えて描画したいと思った(手動はめんどいので)
デフォルトの設定でもある程度自動で合わせてくれるがコレジャナイ感がある時がある
そんなときはstats
コマンドでファイルを読み込むと最大値や最小値、平均、総データ数、標準偏差等を表示してくれる
例えばこんなデータの場合、
gnuplot> pl "data1.dat" u 1:2 w lp
僕の環境では最大値が軸の上限ギリギリになってしまった
手動でset range[-2:6]
とやっても良いが、
まず、stats
コマンドでファイルの詳細を取得すると...
gnuplot> stats "data1.dat" u 1:2
* FILE:
Records: 100 #総データ数
Out of range: 0
Invalid: 0
Column headers: 0
Blank: 0
Data Blocks: 1
* COLUMNS:
Mean: 0.0000 #1列目の平均 0.8180 #2列目の平均
Std Dev: 5.8315 1.7579
Sample StdDev: 5.8609 1.7668
Skewness: 0.0000 1.1884
Kurtosis: 1.7998 3.2259
Avg Dev: 5.0505 1.3627
Sum: 1.24345e-14 81.8029
Sum Sq.: 3400.6742 375.9459
Mean Err.: 0.5832 0.1758
Std Dev Err.: 0.4124 0.1243
Skewness Err.: 0.2449 0.2449
Kurtosis Err.: 0.4899 0.4899
Minimum: -10.0000 [ 0] -1.0847 [ 27] #最小[何列目]
Maximum: 10.0000 [ 99] 4.9915 [ 50] #最大[何列目]
Quartile: -5.0505 -0.2859
Median: 0.0000 0.3412
Quartile: 5.0505 1.1445
Linear Model: y = -3.905e-18 x + 0.818
Slope: -3.905e-18 +- 0.03045
Intercept: 0.818 +- 0.1776
Correlation: r = -1.295e-17
Sum xy: -3.109e-15
取得されたプロパティはそれぞれ以下の変数に格納されている
変数 | 説明 |
---|---|
STATS_min_x | x軸の最小値 |
STATS_max_x | x軸の最大値 |
STATS_min_y | y軸の最小値 |
STATS_max_x | y軸の最大値 |
STATS_mean_x | x軸の平均 |
STATS_mean_y | y軸の平均 |
他にも変数があるが、詳細はこちらを参考に
http://www.ss.scphys.kyoto-u.ac.jp/person/yonezawa/contents/program/gnuplot/stats.html
例えばこんな感じに使うと...
gnuplot> set yrange[STATS_min_y -1:STATS_max_y +1]
gnuplot> pl "data1.dat" u 1:2 w lp
扱うデータのスケールにもよるが、レンジの指定の部分をもう少し複雑にすればより自動的にキレイな描画ができるかもしれない
#最後に
今回は最大/最小について取り上げたが、そのほかのパラメータも取得することができるので、gnuplotだけでもっと複雑な操作ができるかもしれない
#参考にしたサイト
有用な情報ありがとうございました