第2回:グラフ作成

木村拓馬
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