◆ さあ、始めよう pLaTeX2e Blog のページ New!
■ Appendix 2 ■ 初歩 gnuplot 入門
gnuplot とは、 Thomas Williams, Colin Kelley and many others により作成された 二次元および三次元のグラフを描画する機能 を持っている非常に高性能なフリーソフトウェアです。
このページは、愛知教育大学 数学教室における 2003 年度前期授業の gnuplot への 講義記録です。
この年度、数学科 3 年生の学生への前期講義である 『 計算機と 数学 』 おいて TeX と gnuplot の指導を行ないました。 学生は二つの班に分かれて、 3 限 ( 120 分; 33 名 ) および 4 限 ( 120 分; 32 名 ) に受講 していました。
このページは 5 月 9 日 (金) 【 曲線の描画 】 と、 5 月 16 日 (金) 【 曲面の描画 】 の 2 回における講義記録である。
講義は、数学コンピュータ室 ( OS: Windows 2000 ) にて私が作成した プリントを配布しての gnuplot の学習指導、特に簡単には描くことの出来ない曲線および曲面 ( 媒介変数、 極座標表示なども含む ) の描画であったが、 学生の方からは 『 グラフ表示に感動した、 授業が楽しかった、自分で描けてうれしかった 』 などの好評な 感想をいただいた。
この子らには、2 年生の時に 1 年間 『 基礎数学演習 』 を指導したが、 その時には 『 感動した、楽しかった、うれしかった 』 などの感想すら 私は聞いたことがなかった。 これは如何なる事なのかと考えてみた。 そこで 私が得た結論は次のようなものである :
これこそが gnuplot の内に秘めたる大きな魅力 のひとつなのかも知れないのだろうと ・・・・・。
さて、今年度に入り gnuplot がバージョン 3.7.3 から 4.0.0 へと大きく 進展しましたので、このページも 新バージョンの gnuplot 4.0.0 に対応するように加筆修正を施してみました。
なお、以前の gnuplot 3.7.3 対応版への利用 に興味のある方はこちらのページ gp373.html を参考にしてください。
【 今回の主なる改良点 】
曲面の描写技術において、とても大きな進展がありました。
右図の曲面上において、 マウスを左クリック しながら左右上下に移動して曲面の様子をご覧になって見てください。
この操作は、キーボード上にある 矢印キー ( 左・右・上・下 ) を押しても同じ事が可能になっています。
すると曲面の移動が始まり 曲面を違う方向から見た右図のような曲面が容易に描写することが出来ます。
同じ曲面でも、見る方向により随分と異なったように見えるものですね!
Date: 2003/06/18
Update: 2005/06/25
第 (1) 項 gnuplot のインストール方法
第 (2) 項 gnuplot の基本事項
第 (3) 項 gnuplot での曲線の描き方
第 (4) 項 gnuplot での曲面の描き方
第 (5) 項 gnuplot での描画への補足事項
第 (6) 項 TeX 文書への gnuplot での描画の取り込み方法
第 (7) 項 gnuplot への参考文献
▲ To Contents
(1)
gnuplot のインストール方法
【 gnuplot のインストール 】
まず gnuplot の Win32 用バイナリである gp400win32.zip を入手します。 以下から、 ダウンロードが可能なミラーサイトを選択してください :
gp400win32.zip (2004/04/16; 3,033,673 bytes) = 会津大学の FTP ミラーサイトの利用
gp400win32.zip (2004/04/16; 3,033,673 bytes) = 公式ページ FTP サイトの利用
なお、gp400win32.zip はフォルダ gnuplot およびサブフォルダ の bin および demo ( デモ用サンプルが入っている ) 等から構成されています。
続いて、この gp400win32.zip を展開 ( 解凍 ) ツルーを用いて、 必ず 「ディレクトリ情報付き解凍」 を有効 にしてから、自分の好きなフォルダ内で解凍してください。 ここでは、 親ディレクトリ C にて解凍したとして説明いたします。
最後に、 c:\gnuplot\bin 内にある wgnuplot.exe のショート・カット をデスク・トップ上に作成してから、このショート・カットを ダブルクリックすると gnuplot の利用が可能となります。
なお、gnuplot 起動時のフォントは読み辛いので、 gnuplot の Windows 上で 右クリックしてから Choose Font にて 『 MS ゴジック、サイズ 12 』 を選択 してください。
★ Tips :
これから以下において紹介いたします gnuplot 4.0.0 の日本語化キット を利用すると gnuplot の起動画面での Windows 内にあるツール・バーにおいて、 ファイル(F) ---> デモ(D) ... ---> all.dem を選択すると デモ用サンプル を見ることができます。
【 gnuplot の日本語マニュアル 】
新潟工科大学の竹野研究室のみなさまが、 gnuplot 4.0.0 用のマニュアル日本語訳の作成 をしてみえます。
この 6 月 25 日には 新しく MS-Windows 用 の terminal ドライバのマニュアルを含む gnuplot 4.0.0 用の日本語ヘルプ ファイルおよび日本語メニューファイルを含む 日本語化キット wgp400-20050625.zip (2005/06/25; 240,451 bytes) が更新 されました。
◆ 日本語化キットの利用 :
次に、ダウンロードにて入手した wgp400-20050625.zip を展開 ( 解凍 ) ツルー を用いて、自分の好きなフォルダ内で解凍してください。 ここでは、 ディレクトリ c:\tmp にて解凍したとして説明いたします。
◆ gnuplot マニュアルの PDF 日本語版 :
ここで、Windows において PDF ファイルのダウンロード方法は、 右クリックにて 『 対象をファイルに保存 』 を選択 してください。 そして、 この PDF ファイルの gp400-20050620.pdf は Acrobat Reader ( 最新版 では Adobe Reader とよぶ ) にてお読みください。
(2)
gnuplot の基本事項
gnuplot の起動と終了 :
デスクトップ上の gnuplot のショートカットアイコンを
ダブルクリックすると gnuplot が起動する。
終了は、gnuplot の起動画面にて、
次のようにコマンド入力してから Enter キーを押してください :
gnuplot> exit または gnuplot> quit演算子 :
関数 :
利用できる関数の一覧 :
例 :
(3)
gnuplot での曲線の描き方
これから y=f(x) であらわされる曲線の描画に ついての学習をする。
この時の、曲線の描画コマンドは plot です。
曲線 y=f(x)=x^{2} の描画をする。 標準の範囲は -10 ≦ x ≦ 10 です。
gnuplot> plot x**2
曲線 y=f(x)=sin x の描画をする。
gnuplot> plot sin(x)
曲線 y=f(x)=sin (x^{2}) を -pi ≦ x ≦ pi の 範囲 にて描画をする。
gnuplot> plot [-pi:pi] sin(x**2)
2 曲線 y=f(x)=x と sin x を 0 ≦ x ≦ pi の範囲にて 同時に描画 をする。
gnuplot> plot [0:pi] x, sin(x)
★ Remark :
上記の x と sin(x) の間に入っている , は カンマ であり、ピリオドではありませんので入力時には注意してください。 以下の 入力においても同様の注意が必要です。
3 曲線 y=f(x)=sin x/x, sin 2x/2x および sin 3x/3x を -10 ≦ x ≦ 10 かつ -0.4 ≦ y ≦ 1 の範囲にて同時に描画をする。
gnuplot> plot [-10:10][-0.4:1] sin(x)/x, sin(2*x)/(2*x), sin(3*x)/(3*x)
【 今 日 ( 5 月 9 日 ) の 課 題 】
以下は、講義の時間内に作成して提出された 作品の一部と感想です。
山田 裕子さんの作品 :
初めは、すごく複雑な数式をグラフにするなんて、 すごく難しいだろうなあと思っていたけれど、 ただ式を打つだけで簡単にできたのでビックリしました。
それと同時に感動しました。 何度も何度も違ったグラフを 書くのも楽しかったです。
このグラフは y=f(x)= sin 3x/(x^{2}+5), cos 3x/(x^{2}+5), sin 4x/(x^{2}+5), cos 4x/(x^{2}+5) なる 4 つの関数の同時描画です。
何も考えずただ適当に考えて作ったグラフですが、 私はとっても満足できました。 数式や、グラフを少し書けるように なってなんだか新鮮なのと同時にうれしいです!
gnuplot> plot sin(3*x)/(x**2+5), cos(3*x)/(x**2+5), sin(4*x)/(x**2+5), cos(4*x)/(x**2+5)
齋藤 俊輔君の作品 : gnuplot smile
abs コマンドを試しに使ってみたら使えたので、 絶対値を使った曲線を描いてみました。
この関数は y=f(x)= -cos ((pi*x)/2) + |(x-1)(x+1)|/(x-1)(x+1) です。
多分、笑っている顔のように見えると思います。 ( ただし、x の範囲を -3 ≦ x ≦ 3 に限定しないといけませんが。)
複雑なグラフは、手書きだと面倒だし、頭の中で創造するのも難しいです。
ところが、gnuplot を使えば、パソコンでグラフを描いて、さらにそれを印刷 できるじゃないですか! それならば、グラフを使った問題やワークシートなどを 作れるので、非常に便利だと思います。
★ 第(1)項で紹介しました新潟工科大学の竹野研究室主幹の竹野茂治先生は、 この曲線をご覧になって 齋藤君の作品を gnuplot smile と名付けてくださいました。 gnuplot においての gnuplot smile への入力は次のようにします :
gnuplot> plot [-3:3] [-3:3] -cos((pi*x)/2)+abs((x-1)*(x+1))/((x-1)*(x+1))
Part 1. z=f(x,y) であらわされる曲面の描画
この時の、曲面の描画コマンドは splot です。
★ Tips :
今回の gnuplot 4.0.0 における主なる改良点として曲面の描写技術において、 とても大きな進展がありました。
これからの学習においては、描写された曲面上にて マウスを左クリック しながら左右上下の移動を行なうことにより 曲面が少しずつ回転していく様子 を見ることが出来る事を覚えておいてください。
なお、この操作はキーボード上にある 矢印キー ( 左・右・上・下 ) を押しても同じような移動が可能になっています。
曲面 z=f(x,y)=sin x cos y の描画をする。 標準の範囲は -10 ≦ x ≦ 10 および -10 ≦ y ≦ 10 です。
gnuplot> splot sin(x)*cos(y)
曲面 z=f(x,y)=sin x cos y の描画をする。 範囲 は - pi ≦ x ≦ pi および - pi/2 ≦ y ≦ pi/2 です。
gnuplot> splot [-pi:pi] [-pi/2:pi/2] sin(x)*cos(y)
set hidden3d | 隠 線 処 理 |
曲面 z=f(x,y)=sin x cos y を - pi ≦ x ≦ pi および - pi/2 ≦ y ≦ pi/2 の範囲にて、 隠線処理 ( 本来は隠れて見えないはずの曲面や軸を表示しない ) を行ってから 描画をする。
gnuplot> set hidden3d
gnuplot> splot [-pi:pi] [-pi/2:pi/2] sin(x)*cos(y)
set isosamples 50 | 曲面を表示する線の数を 50 本 |
曲面 z=f(x,y)=sin x cos y を - pi ≦ x ≦ pi および - pi/2 ≦ y ≦ pi/2 の範囲にて、隠線処理かつ 曲面を表示する線の数 ( 標準値は 10 本 )を 50 本 にしてから描画をする。
gnuplot> set hidden3d
gnuplot> set isosamples 50
gnuplot> splot [-pi:pi] [-pi/2:pi/2] sin(x)*cos(y)
【 解 答 】
gnuplot> set hidden3d
gnuplot> set isosamples 50
gnuplot> splot sin(sqrt(x**2+y**2))/sqrt(x**2+y**2)
はじめに、媒介変数を使った関数のグラフを描いてみます。 ここで、 媒介変数モードでの 2 次元グラフの 媒介変数 t を用います。
set parametric | 媒介変数モードに設定する |
アステロイド曲線 x=(cos t)^{3}, y=(sin t)^{3} の 描画をするには、次のように入力します。
gnuplot> set parametric
gnuplot> plot cos(t)**3, sin(t)**3
set trange [a:b] | 変数 t の範囲が a ≦ t ≦ b |
set size ratio 0.3 | x 軸と y 軸の長さの比率が 0.3 |
サイクロイド曲線 x=t - sin t, y=1 - cos t の描画 をする。 範囲は 0 ≦ t ≦ 2pi であり、x 軸と y 軸の長さの比率が 0.3 として ください。
gnuplot> set parametric
gnuplot> set trange [0:2*pi]
gnuplot> set size ratio 0.3
gnuplot> plot t-sin(t), 1-cos(t)
【 練習問題 12 】
球面 x=cos u cos v, y=cos u sin v, z=sin u の描画 をするには、次のように入力します。
gnuplot> set parametric
gnuplot> splot cos(u)*cos(v), cos(u)*sin(v), sin(u)
reset | すべての設定を デフォルトに戻す |
gnuplot> reset
set polar | 2 次元のグラフの極座標表示 |
カージオイド曲線 r=1 + cos t の描画をする。 標準の範囲は 0 ≦ t ≦ 2pi です。
gnuplot> set polar
gnuplot> plot 1+cos(t)
【 今 日 ( 5 月 16 日 ) の 課 題 】
以下は、講義の時間内に作成して提出された 作品の一部と感想です。
河村 規代花さんの作品 :
今日の授業では、とても数学科っぽいグラフを書くことができた気分です。 まず は、グラフの説明をしたいと思います。
この曲面は x=cos u (2 + cos v), y=sin u (2 + cos v), z=sin v です。
おなかがすいたので、ドーナツ型の図形を描いてみました。
今日も楽しかったです。
gnuplot> set parametric
gnuplot> set hidden3d
gnuplot> set isosamples 50
gnuplot> splot cos(u)*(2+cos(v)), sin(u)*(2+cos(v)), sin(v)
後藤 俊明君の作品 :
今日は gnuplot で曲面や媒介変数を使った関数のグラフ、極座標表示のグラフ を描くことができた。
この関数は z=f(x,y)=(sin x)^{2} cos y です。
曲面なんて、フリーハンドで描くのは 限界があるしわかりづらい。 去年の基礎数学演習 の授業でも、曲面や接平面がでてきて理解に苦しんだが、このようにグラフで表して 目で見ることができていれば、もっとわかりやすかったのではないだろうか。
曲面を自分で描けたときは、すごくうれしかった。
gnuplot> set hidden3d
gnuplot> set isosamples 50
gnuplot> splot [-pi:pi] sin(x)**2*cos(y)
宗宮 由実さんの作品 :
極座標表示での曲線は r=7 + cos 7t と r=5 + cos 7t の曲線を同時に描画しました。
これは、最近私が好きなドーナツの形に似せて作り 上げました。 上手くできたので、満足です。
カージオイドやサイクロイドはもちろん他の曲線も、 すごく綺麗な曲線であらわすことができ、感動しました。
去年、先生が下さったプリントの曲面も自分で 作ることができ、やりきった感触です。
gnuplot> set polar
gnuplot> plot 7+cos(7*t), 5+cos(7*t)
野崎 江美さんの作品 :
極座標表示で 半径 1/5 の円と r=1/2 + cos 4t のグラフ を組み合わせて、お花を書いて見ました!
普段、教科書などで数式を見ても、 それがいったいどんなグラフなのか想像できず、問題などを 解いていてもいまいちパッとしませんでした。 でも、gnuplot を 使うと、立体の曲面でも目で見ることができるので楽しいです。
数学の授業でも、このようにパソコンでいろいろなグラフを見ることができれば、 数学の授業がもっともっと楽しくなるんじゃないかなぁ・・・と思いました!
gnuplot> set polar
gnuplot> plot (cos(t)**2)/5+(sin(t)**2)/5, 1/2+cos(4*t)
来週 ( 5 月 23 日 ) は学園祭のために休講となるので、次のような レポート課題を提出した。
【 レ ポ ー ト 問 題 】
このレポート課題に対しても、優秀な力作が数多く提出されており 採点していて嬉しい限りであった。
(5)
gnuplot での描画への補足事項
先日の
レポート課題
において、
『
gnuplot の描画でタイトル名の記述および x 軸、y 軸、z 軸の
ラベル、そして x 軸と y 軸の表示は可能なのか?
』
の質問が多く寄せられたので、6 月 6 日 (金) に次のような解説を
プリントにして配布してみました。
gnuplot 4.0.0 では、英語による表示は以下のようなコマンド入力にて 可能です。 しかしながら日本語については、日本語表示の対応が なされてないので無理です。
これから、媒介変数 u と v を用いる媒介変数モードにて有名な エネパーの曲面 ( Enneper's Surface )
x=u - u^{3}/3 + uv^{2}, y=v - v^{3}/3 + vu^{2}, z=u^{2} - v^{2}を例に取りながら、以下の描画の入力例で説明します :
set title "Enneper's Surface" | タ イ ト ル 名 の 記 述 |
set xlabel "x axis" | x 軸にラベル x axis を表示 |
set xzeroaxis | x 軸 を 点 線 で 表 示 |
set urange [a:b] | 変数 u の範囲が a ≦ u ≦ b |
gnuplot> set title "Enneper's Surface" gnuplot> set parametric gnuplot> set hidden3d gnuplot> set isosamples 50 gnuplot> set xlabel "x axis" gnuplot> set ylabel "y axis" gnuplot> set zlabel "z axis" gnuplot> set xzeroaxis gnuplot> set yzeroaxis gnuplot> set urange [-3:3] gnuplot> set vrange [-3:3] gnuplot> splot u-u**3/3+u*v**2, v-v**3/3+v*u**2, u**2-v**2
(6)
TeX 文書への gnuplot での描画の取り込み方法
これから
TeX 文書へ描画を取り込む方法について
述べてみます。
ここでは、 dviout for Windows の活用 を前提として考えますので、 Ghostscript のインストール も既になされていると仮定して話を進めていきます。
具体例として、正規分布曲線 y=f(x)=exp(-x^{2}) を TeX 文書に取り込む方法を 述べます。
terminal postscript eps | EPS ファイルの出力 |
gnuplot> set terminal postscript eps gnuplot> set output "c:/temp/mytest.eps" gnuplot> plot [-3:3] exp(-x**2) gnuplot> set output続いて、できた mytest.eps を自分の TeX 文書があるフォルダに移動させます。 そして TeX 文書に次のような記述を追加して graphicx パッケージに dviout オプションを指定 してから利用をします。
\documentclass[a4paper,12pt]{jarticle} \usepackage[dviout]{graphicx} \begin{center} \includegraphics{mytest.eps} \end{center} \end{document}図版の大きさの拡大・縮小は、次のように幅 ( width ) で調整することが可能です。 また、オプションの clip は、描画領域の外側を描かない ( クリッピングする ) という 指定になっています :
\begin{center} \includegraphics[width=8cm,clip]{mytest.eps} \end{center}上の TeX 原稿を pLaTeX2ε で処理してできる dvi ファイルをもとに Ghostscript を利用して EPS ファイルを PBM 形式に変換してから dviout for Windows でプレビューおよびプリントアウトを行ない ます : dviout for Windows による出力例
★ 参考事項 :
dviout オプションを利用 するためには、c:\dviout\Graphic\Latex2e 内にある color.cfg, dviout.def, graphics.cfg の 3 個 を c:\usr\local\share\texmf\tex\latex\graphics 内へ コピーしてください ( 注意: 移動ではありません! )。
(7)
gnuplot への参考文献
私の手元には、次の一冊の書籍があります :
矢吹 道郎 監修、 大竹 敢 著 : 『 使いこなす GNUPLOT (改訂新版) 』 ( テクノプレス、 2000 年 )
Windows および UNIX システムの X Windows 上での gnuplot の利用を前提とした解説書です。この他には、 第(1)項で紹介 しました 日本語化された gnuplot のヘルプファイル および gnuplot マニュアルの PDF 日本語版 が大いに役立つことでしょう。
本書を横に置いて gnuplot を使っているうちに、自由に使いこなせるようになることを 目標とした解説がなされてある好書です。
Gnuplot △ | ▲ Contents |
---|