グラフを書く (GNUPLOT)

ここでは、数式およびファイルに格納されたデータを、簡単に グラフ化するフリーソフトの一つである、GNUPLOT の基本的な 使い方について説明します。

GNUPLOT では、2次元の X-Y グラフ、棒グラフ、3次元の X-Y-Z、 等高線図を作成することができます。また、X11, Postscript, PBM などさまざまな出力形式(装置)に対応しています。

1. GNUPLOT の起動と終了
2. 2次元グラフ
3. 3次元グラフ
4. 目盛り、ラベル、グリッドの指定
5. データをファイルから読み込んでグラス化する
6. 複数の関数やデータを同一グラフ上に表示する
7. グラフの表示形式
8. 縦横比、全体の大きさを変える
9. 出力ファイルと出力形式の変更
10. コマンドとオプションの情報を得る方法
11. 組み込み関数

  1. GNUPLOT の起動と終了
       起動
    
          $ gnuplot
           
          G N U P L O T
          Linux version 3.7
    
           ...
          termainal type set to 'x11'
          gnuplot>
    
       終了
    
         gnuplot> quit               ! exit でもよい 
    
    2次元グラフには、plot、3次元グラフには、splot コマンドを 用います。グラフの表示方法、出力形式などは set で変更します。

  2. 2次元グラフ
     書式
        plot 変域指定 [値域指定] 式
    
        ディフォルトで x が独立変数として定義されている。
     例
       gnuplot> plot [0:10] 1-exp(-x)
    
    
       独立変数を定義して、使用することもできる。
    
     例
          gnuplot> c(t,K) = K*(1-exp(-t/T))        
          gnuplot> T = 1
          gnuplot> plot [t=0:10] c(t,1)
    
     変域および値域の指定
    
          gnuplot> plot [0:10]       1-exp(-x)   ! 変域を 0 から 10
          gnuplot> plot [0:10][0:20] 1-exp(-x)   ! 変域を 0 から 10 値域を 0 から 20
          gnuplot> plot [0:10][0:]   1-exp(-x)   ! 変域を 0 から 10 値域の下限を 0
          gnuplot> plot [0:10][:10]  1-exp(-x)   ! 変域を 0 から 10 値域の上限を10
          gnuplot> plot [t=0:5]      1-exp(-1/t) ! t を変数とする場合
    
      データポイント数の指定
    
         例:データポイント数を 500 に変更
    
            gnuplot> set samples 500
    
          ディフォルトの x 軸のデータ点数は、100 
          (3次元グラフの場合は、x 軸 100, y 軸100)。
          現在の設定は、show samples で確認できる。
    
    
  3. 3次元グラフ
      書式
    
            splot 値域指定 値域指定 [変域指定] 式
    
            x, y はディフォルトで、独立変数
    
      例
          gnuplot> splot [0:3.14][0:3.14] sin(x*y)
    
          gnuplot> f(x) = sin(x)/x
          gnuplot> splot [-30:30][-30:30] f(sqrt(x**2+y**2))
    
      視点位置の指定
    
         書式
            set view  X軸の回転角, Z軸の回転角, 全体の縮尺, Z軸の縮尺
    
          ディフォルトは、60, 30, 1, 1
    
       例
          gnuplot> set view 20,40,1,1
          gnuplot> replot          !前回実行した (s)plot を実行         
    
      陰線処理
            set hidden3d         ! 陰線処理を行う
            set nohidden3d       ! 陰線処理を解除
    
      等高線
           set contour base     ! 底面上に等高線を表示
            set contour surface  ! 面上に等高線を表示
            set contour both     ! 底面と面上に等高線をひ表示
    
  4. 目盛り、ラベル、グリッドの指定
    
            set logscale  x   ! X軸の対数目盛りの指定
            set logscale  y   ! Y軸の対数目盛りの指定
            set nologscale x  ! X軸の対数目盛りの解除
            set nologscale y  ! Y軸の対数目盛りの解除
    
            set title "グラフのタイトル"
            set xlabel "X軸のラベル"
            set ylabel "Y軸のラベル"
    
            set grid               ! グリッド線を入れる
            set nogrid             ! グリッド線を入れない(ディフォルト)
         
    
  5. データをファイルから読み込んでグラス化する

  6. 複数の関数やデータを同一グラフ上に表示する
     方法    プロットしたい式、データを"," で区切って並べる。
    
     例
          gnuplot> plot [0:10] 1-exp(-x), sin(x), cos(x), sqrt(x)
          gnuplot> plot [0:10] sin(x), '/usr/local/gnuplot_data/2d_sample.data'
          gnuplot> plot 'abc.data', 'efg,data'
          gnuplot> plot 'abc data' using 1:2, 'abc.data' using 1:3 
    
  7. グラフの表示形式
    
      グラフを折れ線で書くのか、点のみをプロットするのか、棒グラフとして
      作成するかなどのグラフの表示形式を指定するには、plot コマンドに with
      オプションを付けてそのスタイルを指定する。
    
      指定方法
         gnuplot> plot "data_file" with style
       または
         gnuplot> plot function with style
    
      グラフのスタイル
        lines          ライン表示(関数を指定した場合のディフォルト)
        points         データポイント表示(データファイルを指定した場合のディフォルト)
        linespoints    ラインとデータポイント表示
        impluses       インパルス表示
        dots           ドット表示
        steps          ステップ表示
        errorbars      誤差グラフ
        boxes          棒グラフ
        boxerrorbars   誤差と棒グラフ
    
     ◎例: gnuplot> plot 'sample.dat' with linespoints
      
  8. 縦横比、全体の大きさを変える
    
      図は、size 指定をしないと横長になっています。
      set size で、図の縦横比を変えることができます。
      例えば、図を正方形にしたければ、
    
          set size 0.73, 1 
    
      とします。(プリントアウトしたときの縦横比は、プリンタにも
      若干依存しますので、数値の微調整は、適当に行って下さい)
    
      また、図をプリントアウトしたり、gif に変換して Web ページに
      張り付けるような場合、ディフォルトの大きさでは、一般に大きな
      図になりすぎてしまいますが、これも set size で図全体の大きさ
      を変更することができます。
      例えば、図の大きさを半分にしたければ、
    
          set size 0.5, 0.5
    
      のようにします。
    
  9. 出力ファイルと出力形式の変更
    
     出力ファイルの指定
    
            set output 'ファイル名'
    
     出力形式の変更
    
          set terminal フォーマット
    
         指定できるフォーマット
       (単に set terminal とタイプすれば指定できるタイプが確認できる)
              x11               X ウィンド(ディフォルト)
              png               PNG 形式
              postscript        Postscript
              postscript eps    Encapsulated Postscirpt
              latex             LaTeX の picture 環境
              eepic             LaTeX の 拡張 picture 環境(eepic.sty)
              mf                METAFONT
              pbm               PBM 形式
        
         例:postscript 形式で、abc.ps というファイルに出力する。
    
          gnuplot> set output 'abc.ps'
          gnuplot> set terminal postscript
          Options are 'landscape noenhanced monochrome dasheddefaultplex ..
          gnuplot> replot
    
  10. コマンドとオプションの情報を得る方法

  11. 組み込み関数
        abs(x)      絶対値
        acos(x)     逆余弦(戻り値の単位はラジアン)
        arg(x)      偏角(戻り値の単位はラジアン)
        asin(c)     逆正弦(戻り値の単位はラジアン)
        atan(a)     逆正接(戻り値の単位はラジアン)
        besj0(x)    J0 ベッセル関数(引き数の単位はラジアン)
        besj1(x)    J1 ベッセル関数(引き数の単位はラジアン)
        besy0(x)    y0 ベッセル関数(引き数の単位はラジアン)
        besy1(x)    y1 ベッセル関数(引き数の単位はラジアン)
        ceil(x)     x の実部を下回らない最小の整数
        cos(x)      余弦(引き数の単位はラジアン)
        cosh(x)     双曲余弦(引き数の単位はラジアン)
        exp(x)      指数関数
        floor(x)    x の実部を上回らない最大の整数
        gamma(x)    x の実数部の gamma 関数
        imag(x)     虚数部(戻り値は実数)
        int(x)      整数部
        log(x)      e を底とする自然対数
        log10(x)    10 を底とする常用対数
        real(x)     実数部
        sgn(x)      x > 0 であれば1、x < 0 であれば -1、x = 0 であれば 0
        sin(x)      正弦(引き数の単位はラジアン)
        sinh(x)     双曲正弦(引き数の単位はラジアン)
        sqrt(x)     平方根
        tan(x)      正接(引き数の単位はラジアン)
        tanh(x)     双曲正接(引き数の単位はラジアン)
    

Last update: June 24,1998 by ushimaru@ece.numazu-ct.ac.jp