木村拓馬 FORTRAN プログラミング –第2回 グラフ作成– 木村拓馬 2014 年 10 月 7 日 23:53 FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 1/16 木村拓馬 . 本日は . . gnuplot を例に,グラフを描くためのデータ出力を練習 2Dのグラフの描き方 3Dのグラフの描き方 グラフをファイルに出力 データ出力の演習 グラフをワープロソフトに貼り付けてみる FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 2/16 木村拓馬 gnuplot 無料の汎用作図プログラム 2 次元と 3 次元のグラフを作成するコンパクトな会話型作図プログラム 1986 年に最初のバージョンが開発 現在では、Linux,UNIX,Windows,Mac OS など様々な OS に対応 各種の機能を有することから、広く利用 使い方を解説したホームページが多数存在する。例えば http://www.gnuplot.info/ (田辺誠, 平山弘:実践 Fortran95 プログラミング, 共立出版 (1994) より引用) GNU(グニュー)とは関係ないらしい g は発音しないらしい(ニュープロット) (wiki) FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 3/16 木村拓馬 gnuplot 用数値データのルール 数値データは,空白 (スペース) で区切る. #でコメント(行の先頭に#があると,その行は無視される). 演習 1.1 で作成したプログラムの出力 ”pr1.1.dat ”の最初の行 . #angle . sin cos の#は数値以外をコメントアウトするためにある. 数値データの例(pr1.1.dat) #angle 0 10 20 30 40 50 60 70 80 sin 0.000000 0.173648 0.342020 0.500000 0.642788 0.766044 0.866025 0.939693 0.984808 cos 1.000000 0.984808 0.939693 0.866025 0.766044 0.642788 0.500000 0.342020 0.173648 FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 4/16 木村拓馬 お絵かき . 起動 . [user@host]$gnuplot . . 終了 . gnuplot>␣exit . . sin(x) の線グラフ . gnuplot>␣plot␣sin(x)␣with␣lines . FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 5/16 木村拓馬 お絵かき . 起動 . [user@host]$gnuplot . . 終了 . gnuplot>␣exit . . sin(x) の線グラフ . gnuplot>␣plot␣sin(x)␣with␣lines . . pr1.1.dat からの sin . gnuplot>␣plot␣"pr1.1.dat"␣with␣lines . . with lines は省略できます . gnuplot>␣plot␣"pr1.1.dat"␣w␣l . with dots with points パラメータ (一部) と省略形 with linespoints with impulse with steps FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) wd wp w lp wi ws 点を打つ 小図形を描く 小図形を描き線で結ぶ x 軸と鉛直線で結ぶ 鉛直線と水平線で結ぶ 6/16 木村拓馬 お絵かき . sin と cos を両方(“,”で区切る) . plot␣"pr1.1.dat"␣using␣1:2␣w␣l,␣"pr1.1.dat"␣using␣1:3␣w␣l . . sin と cos を両方(“ replot ”で追加) (plot· · · の後 ↑ で入力の履歴.少し書き換えて replot するのに便利かも) . plot␣"pr1.1.dat"␣using␣1:2␣with␣lines replot␣"pr1.1.dat"␣using␣1:3␣with␣lines . . 凡例 . plot␣"pr1.1.dat"␣using␣1:2␣title␣"sin(x)"␣with␣lines replot␣"pr1.1.dat"␣using␣1:3␣title␣"cos(x)"␣with␣lines . . 軸 . set␣xlabel␣"x" set␣ylabel␣"f(x)" plot␣"pr1.1.dat"␣using␣1:2␣title␣"sin(x)"␣with␣lines . FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 7/16 木村拓馬 お絵かき . x と f(x) の範囲 . set␣xrange␣[0:360] set␣yrange␣[-1.1:1.1] plot␣"pr1.1.dat"␣using␣1:2␣title␣"sin(x)"␣with␣lines replot␣"pr1.1.dat"␣using␣1:3␣title␣"cos(x)"␣with␣lines . . x と f(x) の範囲 (replot には範囲指定しない) . plot␣[0:360][-1:1]␣"pr1.1.dat"␣using␣1:2␣title␣"sin(x)"␣w␣l replot␣"pr1.1.dat"␣using␣1:3␣title␣"cos(x)"␣w␣l . FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 8/16 木村拓馬 お絵かき (3D) ” 授業のページ”から” pr2.1.dat ”をダウンロードして作業用ディレクトリに保存. ”pr2.1.dat”は,分点を xi = i/15 − 1, (i = 0, 1, · · · , 30), y j = j/15 − 1, ( j = 0, 1, · · · , 30), として, f (xi , y j ) = xi 2 − y j 2 , の値を並べた 31 × 31 行列. . 3D のグラフ . splot␣"pr2.1.dat"␣matrix␣title␣"x*x-y*y"␣w␣l . . 軸 . set␣xtics("-1.0"␣0,␣"0.0"␣15,␣"1.0"␣30) set␣ytics("-1.0"␣0,␣"0.0"␣15,␣"1.0"␣30) splot␣"pr2.1.dat"␣matrix␣title␣"x*x-y*y"␣w␣l . マウスでドラッグすると回転 上の xtics,ytics は,”pr2.1.dat”の 第 0 列が x = −1.0, 第 15 列が x = 0.0, 第 30 列が x = 1.0 に対応 第 0 行が y = −1.0, 第 15 行が y = 0.0, 第 30 行が y = 1.0 に対応 を意味する. FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 9/16 木村拓馬 お絵かき (3D) ” 授業のページ”から” ex2.1.dat ”をダウンロードして作業用ディレクトリに保存. ”ex2.1.dat”は,以下のように 3 次元の点の座標を並べたもの. 数値データの例(ex2.1.dat) # X 0.000000 0.000000 1.000000 0.000000 Y 0.000000 1.000000 0.000000 0.000000 Z 0.000000 1.000000 2.000000 0.000000 1.000000 1.000000 0.000000 1.000000 0.000000 1.000000 1.000000 0.000000 2.000000 3.000000 1.000000 2.000000 . マウスでドラッグすると回転 座標から 3D のグラフ . splot␣"ex2.1.dat"␣w␣l . 座標を並べると線で結ぶ.1 つ目の点と 4 つ目の点を合わせれば 3 角形が描ける 空白行を入れると,線を結ぶのをいったん止める. FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 10/16 木村拓馬 お絵かき (3D) ” 授業のページ”から” ex2.2.dat ”をダウンロードして作業用ディレクトリに保存. ”ex2.2.dat”は,以下のように 3 次元の点の座標を並べたもの. 数値データの例(ex2.2.dat) # X 0.000000 0.000000 0.000000 Y 0.000000 1.000000 2.000000 Z 0.000000 1.000000 2.000000 1.000000 1.000000 1.000000 0.000000 1.000000 2.000000 1.000000 2.000000 3.000000 2.000000 2.000000 2.000000 0.000000 1.000000 2.000000 2.000000 3.000000 4.000000 . マウスでドラッグすると回転 座標から 3D のグラフ . splot␣"ex2.2.dat"␣w␣l . 上のように座標を並べると 3 次元の格子が描ける FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 11/16 木村拓馬 お絵かき (3D) ” 授業のページ”から” pr2.2.dat ”をダウンロードして作業用ディレクトリに保存. ”pr2.2.dat”は,分点を xi = i/5 − 1, (i = 0, 1, · · · , 10), y j = j/5 − 1, ( j = 0, 1, · · · , 10), として, z = x 2 − y2 , の値の (x, y, z) 座標を前ページの例のように並べたもの. . 3D のグラフ . splot␣"pr2.2.dat"␣title␣"x*x-y*y"␣w␣l . マウスでドラッグすると回転 FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 12/16 木村拓馬 お絵かき (ファイルに出力) . 出力端末の変更(例えば jpeg ファイルに書き込む) . gnuplot>␣set␣terminal␣jpeg . . 出力するファイル名 . gnuplot>␣set␣output␣"test.jpeg" . . plot すると”test.jpeg”に書き込まれる . gnuplot>␣plot␣"pr1.1.dat"␣using␣1:2␣title␣"sin(x)"␣with␣lines . . 画像ビューア (Eye Of GNOME) で確認 . [user@host]$eog␣test.jpeg . ほかに eps, gif, png, pbm などの形式. . .gnuplot>␣set␣terminal で使用できる出力端末が確認できる.詳細は help→terminal . ファイル出力をやめたいときは, . gnuplot>␣set␣terminal␣x11 . 失敗してやりなおしたいときも一度 set terminal で出力端末を切り替える FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 13/16 木村拓馬 参考文献 田辺誠, 平山弘:実践 Fortran95 プログラミング, 共立出版 (1994) 戸川隼人: 「ザ・Fortran90/95」, サイエンス社 (1999) gnuplot homepage (2014 年 10 月 5 日閲覧) http://www.gnuplot.info/ gnuplot - ウィキペディア (2014 年 10 月 5 日閲覧) http://ja.wikipedia.org/wiki/Gnuplot FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 14/16 木村拓馬 Appndix FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 15/16 木村拓馬 お絵かき (ファイルに出力) 場合によっては楽かも スクリーンショットを取得してワープロソフト等に貼り付け (以下の図もコレで撮れます) ⇒ ⇒ キーボードの「PrintScreen」を押すと画面全体 「Alt」+「PrintScreen」でアクティブウィンドウ のスクリーンショットを撮る FORTRAN プログラミング,–第2回 グラフ作成– ( 2014 年 10 月 7 日 23:53 ) 16/16
© Copyright 2024 ExpyDoc