[Exp2009]gnuplot を使ってみよう
gnuplot を使う
ここでは, 無料で配布されているグラフソフト「gnuplot」を使って, データの可視化を行います.
2body_sol1.f90 をコンパイルおよび実行すると, fort.12 というファイルができます.
fort.12 を見てみると, 数字が何列かに並んでいます. その中で, 2 列目と 3 列目の数字に着目してみましょう.
それぞれが表しているのは,
- 2 列目 --> 惑星のx座標の時系列
- 3 列目 --> 惑星のy座標の時系列
です. この (x.y) の位置を次々と繋いでいくことで 1 番目の惑星の運動の軌跡が描けます.
ではこれを gnuplot で描画してみましょう.
gnuplot の起動
まず,
$ gnuplot
と打って起動させます. コマンドプロンプトが
gnuplot>
と変わります.
終了するときは,
gnuplot> exit
とすると元のプロンプトに戻ります.
グラフを描く
試しに y=sin(x) のグラフを描いてみましょう.
gnuplot> plot sin(x)
別のウィンドウに下の図のようなグラフが表示されます.
2 つのグラフを重ねて表示するには,
gnuplot> plot sin(x), x
のように「,」で繋ぎます.
2 つのグラフのうち, 一方を点 (points) で, もう一方を線 (line) で描画するときは,
gnuplot> plot sin(x) with points, x with lines
として実行します.
次に, ファイルからデータを読み込んでグラフを描いてみましょう!!
ファイルからデータを読み込む
2body_sol1.f90 をコンパイルおよび実行して, fort.12 というファイルを作ってください.
ファイルには, 時間やその時間における惑星の x 座標, y 座標が書かれています.
次のコマンドを実行してください.
gnuplot> plot "fort.12"
このとき, "fort.12" の 1 列目をグラフの x 軸の値として, 2 列目をグラフの y 軸の値として描画されます.
fort.12 の何列目のデータを描画に使うか指定するときには,
gnuplot> plot "fort.12" using 2:3
のようにします. (上記では 2 列目と 3 列目を指定している)
表示範囲の設定
X 軸や Y 軸の範囲を指定するには, 以下のコマンドを使います.
gnuplot> set xrange [-3:3] gnuplot> set yrange [-3:3]
上記では, x 軸と y 軸の範囲を -3 から 3 までに指定できます.
同じグラフでいろいろと範囲を変えて表示したいときは, set コマンドの実行後に
gnuplot> replot
とすれば, 描き直してくれます.
グラフを保存する
gnuplot で描画したグラフを画像ファイルにする
ここでは, PNG (Portable Network Graphics format) という形式の画像ファイルにします.
1. 初めに gnuplot を起動したとき, 情報実験機では terminal が wxt に設定されていますが, ここで png に変更します.
gnuplot> set terminal png
※wxt … wxWidgets ライブラリで生成される個々のウィンドウへ出力する
2. "ファイル名.png" にグラフを画像として出力. 必ず .png をつけてください.
gnuplot> set output "img_sin.png"
3. グラフを描画します. (このとき, デスクトップの画面には表示されません)
gnuplot> plot sin(x) with lines <--- y=sin(x) を描画
このときに replot コマンドを使うと, うまく png ファイルが作られないので plot コマンドを使ってください.
4. terminal の設定を元に戻す.
gnuplot> set terminal wxt
これでまた, plot したときにデスクトップ画面へグラフが表示されるようになります.
画像の表示
計算機に ImageMagick が入っていれば, 以下のコマンドを実行することで, 表示できます.
$ display 画像ファイル名
その他の機能
gnuplot のコマンドについて知りたいときは,
gnuplot> help コマンド
とすると説明が表示されます. また, 参考文献に挙げた Web ページでも色々な機能を紹介していますので, 参考にしてください.
参考文献
この資料は以下の文献を参考に作成しました.
Keyword(s):
References:[[Exp2009]スケジュール表・各回資料]