gnuplot : プロット結果をデータファイルとして書き出す方法(set table)
gnuplotでデータファイルを書き出す、とは
gnuplotは基本、関数やデータファイルをプロットするソフトですが、その逆でプロット結果をデータファイルとして書き出すという機能もあります。(実際にはプロットは行われず、plotコマンドによってデータファイルが出力されます)
データファイルを書き出す利点
プロット結果をデータファイルとして書き出すことで、何かしらのダミーデータを作ることや、データファイル自体に演算処理をしてそれをデータファイルとして書き出すことなどが出来ます。データファイルとして書き出す方法
簡単な例
データファイルとして書き出す場合、簡単にはgnuplot> set table "output.csv"
gnuplot> plot sin(x)
となります。これでフォルダ内に"output.csv"というデータファイルが書き出されます。また、この状態のままだとplotコマンドを続けて実行するとデータファイルに新しいプロット結果のデータが追記されていきます。再び通常のプロットに戻る場合は
gnuplot> unset table
とします。
書き出されるデータファイルは次のような内容となります。
# Curve 0 of 1, 100 points
# Curve title: "sin(x)"
# x y type
-10 0.544021 i
-9.79798 0.364599 i
-9.59596 0.170347 i
-9.39394 -0.0308337 i
方法の解説
基本的には上の例のように"set tabel"の後ろに出力したいファイル名を付けて設定します。このとき、すでに存在するファイルを指定すると内容が上書きされるので注意して下さい。既存のファイルに追記していきたい場合はgnuplot> set table "output.csv" append
のように"append"オプションを付けます。
出力結果の解説
出力結果を抜き出すと以下のようになっています。-10 0.544021 i
始めの2列はx, yで、3列目(i)はそのデータ点が描画領域に収まっているかどうかの印になっています。"i"なら描画領域内、"o"なら領域外を示しています。
(その他に"u"という印もあるが詳しくは分からず)
出力時のデータ間隔
デフォルトでは出力されるデータ点の数は100個として出力されるようです。これではデータ点が少ないという場合、"set samples"でその数を増やすことが出来ます。"samples"の設定に関しては次の解説記事を参考にして下さい。出力時のフォーマット
デフォルトでは、x, yは以下のような桁数での出力になります。-9.59596 0.170347
桁数を任意のものにしたい場合は、"set format"で設定します。ここでは詳しくは解説しませんが、
5.4 1.2
のように出力したい場合は
gnuplot> set format "%.1f"
とします。これでx, yともに同様の出力になりますが、以下のようにすれば一方だけの出力を変えることも出来ます。
gnuplot> set format y "%.1f"
出力したデータファイルの再利用
gnuplot> plot x, sin(x), cos(x)
のように関数3つを出力すると、3つのデータ系列として出力されます。"plot x"のデータの出力の次に"plot sin(x)"、その次に"plot cos(x)"のデータとなります。そしてそれぞれのデータの間は2行の空行で分かれているため、gnuplotで再度プロットするとき"indexオプション"で扱いやすい形となっています。
なお、"indexオプション"については次の解説記事を参考にして下さい。
plot with table
データファイルを書き出す方法として、"plot with table"という方法もありますがこちらについてはまた別で解説することにします。gnuplot関連のブログ記事
コメント
コメントを投稿