6 付録

6.1 数学関数


表 2: gnuplotの組み込み数学関数.xは実数,zは複素数,rzは実数 もしくは複素数の実部を表す.文献 [1]を 参考に作成.
関数 動作   関数 動作
abs(z) 絶対値 $ \vert z\vert$   ibeta(p,q,rz) 不完全ベータ関数
acos(z) $ \arccos(z)$   igamma(a,rz) 不完全ガンマ関数
acosh(z) $ \mathrm{arccosh}(z)$   imag(z) $ z$の虚部 $ \Im(z)$
asin(z) $ \arcsin(z)$   int(rz) rz の整数部を求める関数
asinh(z) $ \mathrm{arcshinh(z)}$   inverf(rz) erf(rz) の逆関数
atan(z) $ \arctan(z)$   invnorm(rz) norm(rz) の逆関数
atan2(z1,z2) 逆正接関数($ -\pi$$ \pi$)   lgamma(rz) 対数ガンマ関数
atanh(z) $ \mathrm{arctanh}(z)$   log(z) $ \log_e(z)$
besj0(x) 0次ベッセル関数 $ J_0(x)$   log10(z) $ \log_{10}(z)$
besj1(x) 1次ベッセル関数 $ J_1(x)$   norm(rz) 正規分布関数の累積を求める関数
besy0(x) 0次ノイマン関数 $ Y_0(x)$   rand(rz) 擬似乱数を発生させる関数
eesy1(x) 1次ノイマン関数 $ Y_1(x)$   real(z) zの実部 $ \Re(z)$
ceil(rz) $ z$以上の最小の整数を求める関数   sgn(rz) $ \Re(z)$の符号を求める関数
cos(z) $ \cos(z)$   sin(z) $ \sin(z)$
cosh(z) $ \cosh(z)$   sinh(z) $ \sinh(z)$
erf(rz) (正規化)誤差関数 $ \mathrm{erf}(z)$   sqrt(z) $ \sqrt{z}$
erfc(rz) $ 1-\mathrm{erf}(z)$を示す関数   tan(z) $ \tan(z)$
exp(z) $ e^z$   tanh(z) $ \tanh(z)$
floor(rz) $ z$以下の最大整数を求める関数      
gamma(rz) ガンマ関数 $ \Gamma(z_r)$      
         

6.2 コマンド


表 3: gnuplotのコマンドの一覧.文献 [1]から引用.
コマンド 動作
cd 作業ディレクトリを移動
call スクリプトファイル内の変数($n)に値を渡す
clear 現在スクリーンに表示されている内容を全消去
exit GNUPLOT を終了
fit 最小二乗法によるデータの補間
help ヘルプビューアを軌道
if 条件分岐命令
load スクリプトファイルの読み込み
pause GNUPLOT の動作を一時停止
plot グラフの描画
print 変数の内容などの表示
pwd 現在の作業ディレクトリ名を表示
quit GNUPLOT の終了
replot 前に実行した plot コマンドを再実行
reread load コマンドで読み込んだスクリプトファイルの再読込
reset set コマンドで設定したオプションをすべてデフォルトの値に戻す
save ユーザ定義関数やグラフの数値,使用オプションをファイルに保存
set 各種オプションの設定
show 現在の設定内容の表示
shell シェルの起動
splot 3次元グラフの描画
test 使用可能な線種や点種などをすべて表示
update fit コマンドで用いるパラメータファイルの更新

6.3 詳細設定

gnuplotでは設定のコマンド(set)に引き続き設定項目を記述すると,きめ細かな設 定が可能である.設定はsetコマンドを使い,現在の設定を見るためには,show allを使う.デフォルトの設定に戻すには,restコマンドをつかう.表 4に設定可能なものを示すが,詳細はhelpコマンド,あるい はwebを調べよ.

表 4: gnuplotのコマンドの一覧.文献 [2]を参考に作成.
angles 角度の単位 missing 欠けているデータ x2label 軸のラベル
arrow 矢印 mouse マウス x2mtics 軸目盛りを月
autoscale scaleの自動設定軸 multiplot 複数のグラフ描画 x2range 軸の最大値/最小値
bars 誤差棒の先 mx2tics 軸の小目盛 x2tics 軸の大目盛
bmargin 下の余白 mxtics 軸の小目盛 x2zeroaxis ゼロ軸の表示/非表示
border 境界(軸,枠) my2tics 軸の小目盛 xdata データ型が日時
boxwidth 箱の幅 mytics 軸の小目盛 xdtics 軸目盛りを曜日
cbdata mztics 軸の小目盛 xlabel 軸のラベル
cbdtics offsets 描画素領域 xmtics 軸目盛りを月
cblabel origin 原点の位置 xrange 軸の最大値/最小値
cbmtics output ファイル/デバイス xtics 軸の大目盛
cbrange palette xzeroaxis ゼロ軸の表示/非表示
cbtics parametric 媒介変数の使用 y2data データ型が日時
clabel 等高線の凡例 pm3d 3次元カラー y2dtics 軸目盛りを曜日
clip 枠付近のデータ制御 pointsize 記号の大きさ y2label 軸のラベル
cntrparam 等高線の制御 polar 極座標表示 y2mtics 軸目盛りを月
colorbox print リダイレクト先 y2range 軸の最大値/最小値
contour 等高線の表示 rmargin 右の余白 y2tics 軸の大目盛
datafile データファイル設定 rrange 軸の最大値/最小値 y2zeroaxis ゼロ軸の表示/非表示
date_specifiers 日時のフォーマット samples サンプル数 ydata データ型が日時
decimalsign size 図の大きさ ydtics 軸目盛りを曜日
dgrid3d 3次元データを格子 style プロットスタイル ylabel 軸のラベル
dummy 独立変数の変更 surface 3次元表示の面 ymtics 軸目盛りを月
encoding 文字コード term ターミナルの設定 yrange 軸の最大値/最小値
fit フィッティング terminal ターミナルの設定 ytics 軸の大目盛
fontpath フォントのパス tics 目盛の向き yzeroaxis ゼロ軸の表示/非表示
format 軸の数字の書式 ticscale 目盛の長さ zdata データ型が日時
grid 格子を描く ticslevel splotの面間隔 zdtics 軸目盛りを曜日
hidden3d 隠線処理 time プロットの日時 zero ゼロの敷居値
historysize time_specifiers 日時のフォーマット zeroaxis ゼロ軸の表示/非表示
isosamples 3次元の線の数 timefmt 日時のフォーマット zlabel 軸のラベル
key 凡例 timestamp プロットの日時 zmtics 軸目盛りを月
label 任意のラベル title 図のタイトル zrange 軸の最大値/最小値
lmargin 左の余白 tmargin 上の余白 ztics 軸の大目盛
loadpath パス trange 軸の最大値/最小値
locale ロケール設定 urange 軸の最大値/最小値
log $ \log$プロット view 3次元表示の視点
logscale 対数軸 vrange 軸の最大値/最小値
mapping 3次元の座標系 x2data データ型が日時
margin 外側の余白 x2dtics 軸目盛りを曜日

6.4 複数のデータのグラフ化

6.4.1 データが配列に格納されている場合


   1 #include <stdio.h>
   2 #include <math.h>
   3 #define NX 720
   4 
   5 int main(void){
   6   FILE *gp;
   7   int i;
   8   double dx, x[NX+1], y1[NX+1], y2[NX+1], y3[NX+1];
   9 
  10 
  11 
  12   /* ---- データ作成 ---- */
  13   dx=4*M_PI/NX;
  14   for(i=0; i<=NX; i++){
  15     x[i]=-2*M_PI+i*dx;
  16     y1[i]=sin(x[i]);
  17     y2[i]=cos(x[i]);
  18     y3[i]=tan(x[i]);
  19   }
  20 
  21 
  22 
  23   /* ---- グラフ作成の準備 ---- */
  24   gp = popen("gnuplot -persist","w");
  25   fprintf(gp, "set xrange [-6.5:6.5]\n");
  26   fprintf(gp, "set yrange [-1.5:1.5]\n");
  27   fprintf(gp, "plot '-' with lines linetype 1 title \"sin\",\
  28                     '-' with lines linetype 2 title \"cos\",\
  29                     '-' with lines linetype 3 title \"tan\"\n");
  30 
  31   /* ---- 最初のデータ(sin)の書き込み ---- */
  32   for(i=0; i<=NX; i++){
  33     fprintf(gp,"%f\t%f\n", x[i], y1[i]);
  34   }  
  35   fprintf(gp,"e\n");
  36 
  37   /* ---- 2番目のデータ(cos)の書き込み ---- */
  38   for(i=0; i<=NX; i++){
  39     fprintf(gp,"%f\t%f\n", x[i], y2[i]);
  40   }  
  41   fprintf(gp,"e\n");
  42 
  43   /* ---- 3番目のデータ(tan)の書き込み ---- */
  44   for(i=0; i<=NX; i++){
  45     fprintf(gp,"%f\t%f\n", x[i], y3[i]);
  46   }  
  47   fprintf(gp,"e\n");
  48 
  49 
  50   pclose(gp);
  51 
  52   return 0;
  53 }

ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年7月4日


no counter