gnuplotについて
概要
gnuplotは、コマンドにより2Dや3Dの数学のグラフを描ける、独自ライセンスのオープンソースソフトです。Windows/Mac/Linux等で動作します。
gnuplot homepageのgnuplot demo plotsやDemo scripts for gnuplotを見ると大体どのような事ができるか分かります。
詳細はマニュアルを見て頂くのが良いと思います。ここでは、ポイントを説明します。
インストール
インストールは、gnuplot homepageのDownloadの、ソース、バイナリ:Windows(4.6.5)Mac(4.0.0)でできます。
MacではX11のXQuartzのインストールが必要なはずです。
他に、Maxima等の別ソフトと一緒にgnuplotがインストールされることもあります。MaximaをインストールするとWindows版はgnuplot 4.6が、Mac版はgnuplot 4.2が一緒にインストールされます。
対話型操作
次のようにgnuplotを実行すれば、対話型操作モードになります。
対話型操作モードでは、gnuplotのコマンドプロンプトが表示されます。
gnuplot>
例えば、次のように入力すればxを変数とする$y=\sin(x)$のグラフが描画されます。xの範囲はデフォルトで$[-10,10]$であり、yの範囲は自動的に決まります。
gnuplot> plot sin(x)
対話型操作の終了は、gnuplotのコマンドプロンプトで、exit
、quit
、q
、[control]+d
のいずれかを入力します。
グラフをファイル出力
グラフをファイル出力するには次のように設定した後plot
コマンドを実行します。
set terminal pngcairo #他にtikz canvas svg pdfなど set output "C:¥¥test¥¥gnuplot2D.png"
gnuplot 4.4以降は、グラフをJavaScriptのcanvasで出力できるようになっています。
canvas出力の表示には、canvastext.js
、gnuplot_common.js
、gnuplot_mouse.css
ファイルが必要です。外部ファイルが必要なのでブログで使うには不便ですね。
Maxima版からは上記3ファイルは省かれています。また、TeXのTikZ出力に必要なプログラムも省かれています。
バッチ操作
バッチ操作をするには、コマンドのスクリプトファイルを作成し、gnuplotプログラムの引数に渡します。
-e
オプションで事前に処理するコマンドを渡せ、-persist
オプションでグラフを残したままにできます。詳しくはマニュアルを見て下さい。
例:2D
スクリプトファイルgnuplot2D.gp
set terminal pngcairo #他にtikz canvas svg pdfなど set output "C:¥¥test¥¥gnuplot2D.png" set xtics 0.5*pi #目盛り set format x "%4.1Ppi" #値の書式 set grid #グリッド表示 set xtics axis #原点を通る軸にメモリを表示 set ytics axis #3Dでは期待通りにならない set arrow 1 from 0,0 to pi/2,1 #矢印(ベクトル) set size square #グラフを正方形に plot [-pi:pi] sin(x) with points, cos(x), x**0.5 #**は冪
実行
C:\Program Files (x86)\Maxima-5.28.0-2\gnuplot>gnuplot "C:\\test\\gnuplot2D.gp"
ファイルgnuplot2D.png
処理の意味は、コメントを見て下さい。
グラフのx軸とy軸の長さを同じにする方法はよく分からないです。多分、x軸とy軸の値の範囲を指定して、set size
でその範囲に応じた比を指定するのかと思います。
例:3D
スクリプトファイルgnuplot3D.gp
set terminal pngcairo set output "C:¥¥test¥¥gnuplot3D.png" set xtics 0.5*pi #目盛り set ytics 0.5*pi set format x "%4.1Ppi" #値の書式 set format y "%4.1Ppi" set grid splot [-pi:pi] [-pi:pi] sin(x)*cos(y)
実行
C:\Program Files (x86)\Maxima-5.28.0-2\gnuplot>gnuplot "C:\\test\\gnuplot3D.gp"
ファイルgnuplot3D.png
splot
コマンドを使うと3Dグラフが描画されます。変数x,yとなり、$z=\sin(x)\times\cos(y)$のグラフが描かれます。
理系ジンの意見
簡単にグラフを描けます。gnuplot流と言う感じがします。gnuplot 4.4以降はcanvas出力もできるようになっていますが、外部ファイルが必要でありブログに貼付けるには少し不便です。Maxima付属のgnuplotは手軽に試せます。
ネットに既に多くの解説があるので簡潔な解説にしました。
予定
理系ジンと言う名前の割に狭い内容になっていますが、コンテンツ作成の道具を整理して、徐々にペースを上げて、オリジナルコンテンツやテーマを広げて内容を充実させようと思っています。
参考資料
- gnuplot homepage
- Download:ソース、バイナリ:Windows(4.6.5)Mac(4.0.0)
- Documentation/日本語マニュアル
- Demo
- Demo scripts for gnuplot:2D/3Dグラフのデモとソースpng/svg/canvas
- Maxima:Download > Sourceforge download page。gnuplotもインストール
- XQuartz:Mac版X11
- Gnuplot(Wikipedia)
- MacWiki - gnuplot:Macでのインストール方法
- マスクメロンgnuplot.app:Mac版の最新バイナリ
- gnuplotコマンド集:整理されている
- gnuplotの初歩
- gnuplotスクリプトの解説(米澤 進吾ホームページ):gnuplotで微分・積分!
- GNUPLOTを用いたグラフ作成:ウォークスルー解説
- コマンドラインから引数を取る(Qiita)