gnuplot 入門
緑川研究室 gnuplot 愛好会

1多項式

三角関数

23 次関数関数 y = x3 + 3x2 を描いてみよう。

正弦関数

y = sin x1sin(x)0.80.60.48x*x*x+3*x*x0.2

7605-0.2

4-0.4

3-0.6

2-0.8

1-1-100-50510-1-2

gnuolot> reset
gnuplot> plot sin(x)-3-3-2.5-2-1.5-1-0.5

00.5

1

gnuplot を立ち上げて、以下のように入力する。

余弦関数

y = cos x
gnuplot> set xrange[-3.2:1.3]
gnuplot> plot x**3+3*x**2

1cos(x)0.80.6
0.40.24 次式

0-0.2-0.4

y = x4 − x2

-0.6
-0.8
-1-10

0.3-5

0510x**4-x**20.2

gnuplot> reset
gnuplot> plot cos(x)

0.1

0



-0.1

注意
全ての設定をクリアするときは、

-0.2

-0.3
-1-0.500.5

1

gnuplot> reset

gnuplot> set xrange[-1.1:1.1]
gnuplot> plot x**4-x**2と打ち込む。
1

パラメトリック曲線

31cos(t), sin(t)
0.8

円

0.6
0.4

x = a cos t,

y = a sin t

0.2
0-0.2

とおくと、

-0.4
-0.6

x 2 + y 2 = a2-0.8-1-1-0.8-0.6-0.4-0.2

00.2

0.4

0.60.81

単位円 (a = 1) の場合

gnuplot> set size square
gnuplot> set parametricdummy variable is t for curves, u/v for surfaces
gnuplot> plot cos(t), sin(t)楕円

1cos(t), 0.5*sin(t)x = a cos t,

y = b sin t
0.5

とおくと、
022xy+ 2 =12
ab-0.5-1-1-0.5

0a = 1, b = 0.5 の場合
gnuplot> set size square
gnuplot> set xrange[-1:1]
gnuplot> set yrange[-1:1]
gnuplot> set parametricdummy variable is t for curves, u/v for surfaces
gnuplot> plot cos(t), 0.5*sin(t)20.511/cos(t), tan(t)双曲線

x=4a,cos t

y = b tan t

2

とおくと、

0x2 y 2
− 2 =1a2
b-2-4-4-2

02

4

a = 1, b = 1 の場合
gnuplot> set size square
gnuplot> set xrange[-5:5]
gnuplot> set yrange[-5:5]
gnuplot> set parametricdummy variable is t for curves, u/v for surfaces
gnuplot> plot 1/cos(t), tan(t)リサージュ曲線1sin(2*t), sin(3*t)
0.8

x = sin at,

y = sin bt

0.6
0.4

a = 2, b = 3 の場合

0.2
0-0.2

gnuplot> reset
gnuplot> set size square
gnuplot> set parametric

-0.4
-0.6
-0.8
-1
-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

dummy variable is t for curves, u/v for surfaces
gnuplot> plot sin(2*t), sin(3*t)

30.6

0.8

1

アルキメデスの渦巻線

15r = at (t ≧ 0)t*cos(t), t*sin(t)105

a = 1 の場合

0x = t cos t,y = t sin t-5-10

gnuplot> reset
gnuplot> set size square
gnuplot> set xrange[-5*pi:5*pi]
gnuplot> set yrange[-5*pi:5*pi]
gnuplot> set parametric-15-15-10-5051015

dummy variable is t for curves, u/v for surfaces
gnuplot> plot [0: 5*pi] t*cos(t), t*sin(t)4曲面

楕円的放物面x**2+2*y**2x2 y 2
z= 2+ 2ab√a = 1, b = 1/ 2 の場合
300

gnulot> splot x**2+2*y**2

250
200

マウスでぐりぐり動かすことができます。

150
100500105-100-50-55-10
104

双曲的放物面

x2 y 2z= 2− 2abx**2-2*y**2√
a = 1, b = 1/ 2 の場合
10050

gnulot> splot x**2-2*y**20-50

マウスでぐりぐり動かすことができます。

-100-150-200
105-100-50-55-10
105

パラメトリック曲面

sin(u)*cos(v), sin(u)*sin(v), cos(u)

球
10.8
0.6
0.4
0.2
0-0.2
-0.4
-0.6
-0.8
-1 -1
-0.8
-0.6
-0.4
-0.2

x = sin(u) cos(v)y = sin(u) sin(v)z = cos(u)gnuplot> reset
gnuplot> set view equal xyz
gnuplot> set ticslevel 0gnuplot> set isosamples 24
gnuplot> set hidden3d
gnuplot> set parametric

1
0.8
0.6
0.4
0.2
0-0.2
-0.4
0 0.2
-0.6
0.40.6-0.8
0.8 1-1

dummy variable is t for curves, u/v for surfaces
gnuplot> splot sin(u)*cos(v), sin(u)*sin(v), cos(u)

5

トーラス

x = a cos(u)(d + cos(v))
y = b sin(u)(d + cos(v))
z = c sin(v)a = b = c = 1, d = 2.5 の場合
gnuplot> set parametricgnuplot> splot cos(u)*(2.5+cos(v)), sin(u)*(2.5+cos(v)), sin(v)cos(u)*(2.5+cos(v)), sin(u)*(2.5+cos(v)), sin(v)

10.8
0.6
0.4
0.20-0.2-0.4-0.6-0.8-1-4-3-2-10

1234 -4-3-2-101234

図がちょっと粗いですね。もう少し細かく描画します。

gnuplot> set isosamples 50gnuplot> replot
こうして得られたのが、次の図です。
cos(u)*(2.5+cos(v)), sin(u)*(2.5+cos(v)), sin(v)

10.8
0.6
0.4
0.20-0.2-0.4-0.6-0.8-1-4-3-2-101234 -4-3-2-10

1234

今度は、陰影処理をしましょう。

gnuplot> set hidden3d
gnuplot> replot
下の図のように、トーラスらしく見えるようになりました。
cos(u)*(2.5+cos(v)), sin(u)*(2.5+cos(v)), sin(v)

10.8
0.6
0.4
0.2
0-0.2-0.4-0.6-0.8-1-4-3-2-10

12

3

4 -4-3-2-1012

346更に進んだ使い方 - スクリプト形式

6

今までの使い方では、プロンプト画面から命令をキーボード入力 (コマンド入力) で描画を行いました。これでは修正を施して再描画をおこなおうとすると何度も同じ命令を打ち込み、煩わしくなります。そこで、この煩わしさを避けるためには、一群の命令をシートに書いて実行するスクリプト形式で行います。
まず、新規作成でテキストドキュメント (メモ帳) を開き、そこに命令を書き込みます。ファ
イルに新しい名前を付けて保存します。その時の拡張子は、plt です。命令を実行する場合には、wgnuplot.exe を起動して File → Open から plt ファイルを開きます。

6.1

再び三角関数

それでは、最初に取り上げた三角関数の描画をスクリプト形式で行ってみましょう。
メモ帳に以下のスクリプトを書き込んで、sine.plt という名前で保存します。
sine.plt

reset
set terminal postscript
set output "sine.ps"
set size 1 , 0.3
set size ratio -1
set xzeroaxis
set yzeroaxis
set xtics ("-p" -pi, "-p/2" -pi/2 ,"0" 0.0, "p/2" pi/2 ,"p" pi) font "Symbol"
set ytics -1, 0.5, 1
set xrange[-pi:pi]
plot sin(x)

この様にして描いた図は、次のようになります。

1sin(x)0.50-0.5-1−π−π/20π/2

スクリプト (命令) の意味は以下の通りです。

7π(1) reset
すべての命令を御破算にする。これを書かないと、思わぬ命令が残っていて、イメージ通りの図が描けなくて苦労することがあります。
(2) set terminal postscript
最終の出力形式を指定。ここでは、ポストスクリプト言語で出力する。
(3) set output ”sine.ps”
生成物 (画像) の名前を sine.ps とする。
(4) set size 1 , 0.3
画像の描画領域の大きさ x 軸方向の大きさを１に、y 軸方向の大きさを 0.3 にとる。
(5) set size ratio -1x 軸の単位長さを y 軸の単位長さを同じにする。
(6) set xzeroaxis
x 軸を表示(7) set yzeroaxis
y 軸を表示(8) set xtics (”-p” -pi, ”-p/2” -pi/2 ,”0” 0.0, ”p/2” pi/2 ,”p” pi) font ”Symbol”
pi は、π (円周率) を表す。{”-p” -pi } は、-pi すなわち、−3.1415 · · · の位置の目盛にラベル −π を付けることを意味します。Symbol フォントは、ローマ字に対応するギリシア文字を表します。
(9) set ytics -1, 0.5, 1y 軸に目盛を −1 から 0.5 刻みで 1 まで付ける。
(10) set xrange[-pi:pi]
x の描画範囲を −π から π までとする。
(11) plot sin(x)y = sin(x) のグラフを描画する。

86.2

y 2 = x2 (x + 1) + c のグラフ

スクリプト形式を利点の 1 つとして、パラメータの値を少しずつ変えてグラフを描く場合が考えられます。例として、y 2 = x2 (x + 1) + c のグラフを取り上げます。定数 c の値を0.01, 0, −0.01 と３つの場合について描いたのが下の図です。
1.5

1.5

22

1.5

2

y =x (x+1)+0.01

2

y2=x2(x+1)-0.01

y =x (x+1)

1

1

1

0.5

0.5

0.5

000-0.5

-0.5

-0.5

-1-1-1-1.5-1.5-1-0.5

00.5

11.5

-1.5
-1.5

-1-0.500.5

11.5-1.5-1.5-1-0.5

00.5

11.5

左から、c = 0.01, 0, −0.01 の場合

図 1: y 2 = x2 (x + 1) + c のグラフ

ここで、c = 0 の場合のスクリプトを以下に示します。適当に手直しをすることにより、c = ±0.01 の場合も描くことができます。
y2=f(x).plt

reset
set terminal postscript portrait
set output "y2=x2(x+1).ps"
set nokey
set size square
set xrange[-1.5:1.5]
set yrange[-1.5:1.5]
set samples 40000#標本点の数を 4000 にする。
c=0.0
set label "y^2=x^2(x+1)" at -1, 1.2 font ’Times Roman-Italic, 20’plot sqrt(x**2*(x+1)+c), -sqrt(x**2*(x+1)+c) w l ls -1

【注】 sqrt(x**2*(x+1)+c), -sqrt(x**2*(x+1)+c) w l ls -1 について(1) 関数の定義において、x2 は x**2 と表します。一方、ラベルに x2 と書きたいときは、x^2と打ち込みます。
√√(2) plot コマンドでは、y = x2 (x + 1) + c と y = − x2 (x + 1) + c を同時に書かせています。特に、指定しないと２番目の関数は点線で描きますので、改めて実線で描くように指示します。 w l ls -1 は、with line linestyle -1 の略で、ls -1 は、実線を表します。
9

LATEX に出力

7前のセクションでサイン曲線を描いたとき、x 軸の目盛のラベルが π の分数の場合には、π/2のように表しました。これを、 π2 のように表したいときには、ターミナルへの出力を LATEXにします。スクリプトには、 LATEX のコマンドを書くことができます。ただし、数式モード(math mode) における命令は、￥ · · · の代わりに ￥￥ · · · と￥を重ねて打ちます。例えば、分数πと書きたい場合には、${￥￥frac{￥￥pi}{2}}$となります。次は、コサイン曲線を LATEX2に出力した例です。

10.50−0.5−1−π− π2

π20πplt ファイルは、以下の通りです。
cosTex.plt



reset
set terminal latex
set nokey
set output "cosTex.tex"
set size ratio -1
set xtics ("${-\\pi}$" -pi, "${-\\frac{\\pi}{2}}$" -pi/2, "$0$" 0.0, \"${ \\frac{\\pi}{2}}$" pi/2, "${\\pi}$" pi)set ytics -1, 0.5, 1
set xzeroaxis
set yzeroaxis
set xrange [-pi:pi]
set yrange [-1:1]
plot cos(x)【注】(1) \は、半角の￥と同じです。
(2) １つの命令が長すぎて、途中で改行したい場合には、\(￥) を打ってから改行します。
10

先の方法では、分数 π2 の活字 π が小さくなっています。LATEX では、この調整を自動で行います。これが気に入らない場合には、${￥￥displaystyle ￥frac{￥￥pi}{2}}$として、さらにラベルの位置を微調整をおこないます。そうして得られた結果が、次のグラフです。

10.50−0.5−1−π−π2π20π

plt ファイルは、以下の通りです。
cosTex2.plt



reset
set terminal latex
set nokey
set output "cosTex.tex"
set size ratio -1
set xtics ("\\lower4ex\\hbox{${-\\pi}$}" -pi, \"\\lower6ex\\hbox{${\\displaystyle -\\frac{\\pi}{2}}$}" -pi/2, \"\\lower4ex\\hbox{$0$}" 0.0, \"\\lower6ex\\hbox{${\\displaystyle \\frac{\\pi}{2}}$}" pi/2, \"\\lower4ex\\hbox{${\\pi}$}" pi)set ytics -1, 0.5, 1set xzeroaxis
set yzeroaxis
set xrange [-pi:pi]
set yrange [-1:1]
plot cos(x)11