【gnuplot小ワザまとめ】読み込んだファイルのプロパティを取得
概要
測定等で得たデータを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だけでもっと複雑な操作ができるかもしれない
参考にしたサイト
有用な情報ありがとうございました
Author And Source
この問題について(【gnuplot小ワザまとめ】読み込んだファイルのプロパティを取得), 我々は、より多くの情報をここで見つけました https://qiita.com/_shin_/items/8513b1300508e6d6bad7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .