Gnuplotのいろは


目次

  • Gnuplotとは
  • Gnuplotの利点
  • Gnuplotのdownload
  • Gnuplot5.0の変更点
  • 知っておくと便利な豆情報
  • バッジファイルによる一括処理の方法
  • バッジファイルの作成
  • EPSの出力
  • multiplot
  • 工学系論文のための図


    Gnuplotとは

    2次元や3次元のグラフを作製するためのコマンドラインアプリケーション.1986年から開発がスタートした歴史あるフリーウェアであり,現在ではLinux,UNIX,Windows,MacOS Xなど多くのOSに対応している.


    Gnuplotの利点

    コマンドを入力しなければならないため,初心者には敬遠されがちであるがインターネットには使い方の解説が多く載っており,出力画像ファイルもPNG, EPS, SVG, JPEGなど多くの形式に対応している.また,バッジファイルによる一括処理が可能なため,一度ファイルを作成すればデータの差し替えのみで出力が済み,便利である.


    Gnuplotのdownload

    Gnuplotはフリーソフトであり,gnuplot homepageから最新バージョンをインストールできる.


    Gnuplot5.0の変更点? いつの間にかできるようになってたこと・・・

    矢印の長さ,角度指定

    今までは矢印の指定は始点と終点の座標を指定する必要がありましたが,始点,長さ,角度を入力すれば良いとのこと.
    set arrow # from #,# length # angle #
    の#に数字を入れればよし!

    線の種類の指定(dashtype)

    linetype(lt)と同じようにしてdashtype(dt)が指定できるようになったとのこと.

    ちなみに,eps出力でカラーを指定しておくと,ltで色をdtで線の種類を指定できるけど,enhancedでモノクロ指定しておくとltで線の種類の選択になってしまうようです.

    dt # : 規定の線の種類
    dt 1 : 実線
    dt 2 : 短い破線
    dt 3 : 点線
    dt 4 : 一点鎖線
    dt 5 : 二点鎖線
    dt 6 : 破線
    dt 7 : 3点+スペース
    dt 8 : 間隔の広い一点鎖線
    dt 9 : 2点+スペース
    dt "pattern" : 点,ハイフン,アンダーバー,スペースの組合せ

    dt "." : 点線
    dt ". " : 少し間隔の広い点線
    dt "-" : 破線
    dt "- " : 少し間隔の広い破線
    dt "_" : 線の長い破線
    dt "_ " : 少し間隔の広い線の長い破線
    dt (s1,e1,s2,e2,s3,e3,...) :
    (solid length)(emptyspace length)のペア

    dt (10,5) : 線が10,空間が5の破線
    dt (10,5,2,5) : 線が10,空間が5,線が2,空間が5の一点鎖線
    などなど線の長さと空間の長さを任意に指定できるようになってます.

    知っておくと便利な豆情報


    文字の設定


    一括設定
    一番良く使う文字やサイズを最初に文字を設定すれば楽ですよね
    例:
  • set term pdfcairo font "Times,12"
  • set term pdfcairo font "Times-New-Roman,12"
  • set term png font "arial"
  • set term png font "/usr/local/fonts/ttf/arial.ttf"
  • set term png font "arial,11"
  • set term postscript eps font "Times-Roman,12"
  • 部分的な変更
  • {/Times-Italic 文字} : タイムズの斜体
  • {/Symbol 文字} : ギリシャ文字
  • {/Symbol-Oblique 文字} : ギリシャ文字の斜体
  • a^x : 上付き文字(aのx乗)
  • a_x : 下付き文字
  • a@^2_{xy} : 上付き文字+下付き文字
  • ~{文字}{.6記号} :
      記号を上に乗せる(数字を変化させると高さの調整)
      例:~{a}{.4-},~{a}{.5\~}, ~{a}{.6\^}
        (~や^は文字として認識しないので前に"\"を付ける)
  • ~{文字}{.6/*.2記号} :
      文字の上に小さくした記号を乗せる 
      (左の数字:乗せる位置,右の数字:記号のサイズ)


  • 関数の部分的な表示

  • 関数の線を書く際,f(x) x<1 ? f(x):1/0とするとf(x)の1以下の部分のみ表示
    ※x<1とすると1を含まないようであるので,ちょうど1を含めるためには1.01など範囲を若干工夫する必要がある



  • 頻出設定コマンド,その他

  • lt→線の種類. 
  • lw→線の太さ.
  • pt→点の種類.
  • ps→点のサイズ.
  • Ver.4.6以降では軸ラベルの座標指定時に数字の前にoffsetが必要
  • #→コメントアウトの記号
  • with linespoints pt * ps * lt * lw*→線と点を同時に出力
  • with xyerrorbars pt* ps * lt * lw * →xy標準偏差同時出力."x, y, x標準偏差, y標準偏差"の順にデータを読み込む
  • set xrange [1e2:1e11]→log軸で10桁以上の大きな数字は[1:10000000000]とすると"warning: integer overflow; changing to floating point"と出てしまうのでこのように変更



  • バッジファイルによる一括処理の方法

    gnuplotはコマンドの入力により図を作製するソフトである.従って複雑な図を作製する際にはかなりの量の指令を与えなければならない.コマンドラインに毎回入力するのは大変であるため,一つのテキストファイルに全てのコマンドを順に入れておき,そのファイルを実行するのみで図を出力させる方法が便利である.これが,バッジファイルによる一括処理である.

    コマンドを入力したバッジファイルが,Cドライブのgnuplotというフォルダに保存されているとしよう.このファイルを実行するには,gnuplotを起動し
    load 'c:\gnuplot\ファイル名.txt'
    とコマンドを打てば良い.

    これだけで,図の作成が行えるのがgnuplotの最大の強みの一つである.自分の好みのバッジファイルを作成すれば,毎回1から作製する必要もないため,時間の節約にもなろう.このページでは,以後バッジファイルの作成について説明する.


    バッジファイルの作成

    図作成のためのコマンドを順番に並べ,一つにファイルにしたものがバッジファイルである.
    例えば,template1.txtというファイルなら以下の様な図が出力されます.



    gnuplot.zip を展開し,Cドライブに直置きし,前述のコマンドを実行すれば同じものが作成されるはずです.
    この方法ならば,一度独自のテンプレートを作成すれば今後簡単にフラフを作製することが出来ます.


    EPSの出力

    投稿論文などの図は拡大した際の解像度の問題などからJPEGなどではなくベクトルデータで保存されているEPSでの提出が求められることが多い. gnuplotで作成した図をEPSで出力しておけば,論文作成時にサイズを気にすることなく使用することが可能であり,理系で広く用いられているlatexへの挿入も簡単なため,EPSで図を出力しておくことをおすすめする.

    EPSのviewerとしてはGSViewなどがある.GSViewとGhostscriptのセットはフリーで簡単にインストールできるため,よく使われている.

    次のコマンドを入力することでEPSで出力される.
    set terminal postscript enhanced eps
    enhancedの代わりに「color」と入力するとカラー出力されるが,理系論文ではモノクロ印刷が一般的であり,色ではなく線や点の種類による区別をオススメする.
    (set terminal postscript color eps font "Times-Roman, 27")



    multiplot

    一度に複数の図を載せたい場合は以下のようにすればOK.

    ##Gnuplot5に対応したmulti plot用コード
    # ここから

    # リセットにより最新情報の更新
    reset

    # eps出力指令及び文字サイズの規定
    set terminal postscript color eps font "Times-Roman, 25"

    # epsファイル保存先指定
    set output 'c:\gnuplot5\template\multi-temp.eps'

    # ***********************************
    # 以後,出力される図に関する記載
    # ***********************************

    # 複数の図を載せる例。
    set multiplot

    # ①左上
    set origin 0.00, 1.00
    set size 1.0,1.0
    set xlabel 'X' offset 0.0,0.0
    set ylabel 'Y' offset 0.0,0.0

    # 凡例
    set key at 19.0, 34
    set key spacing 1.5
    set key samplen 3

    # 軸の範囲指定
    set xrange [-10.0:10.0]
    set yrange [-1:30.0]

    # 軸の目盛間隔の指定.
    set xtics 5
    set ytics 5
    set xtics nomirror

    # 軸の少目盛間隔の指定.
    set mxtics 5
    set mytics 5

    # 軸の数字指定."%.1f"は小数点第一位まで."10^{%L}"は10の何乗という表記.
    set format x "%.0f"
    set format y "%.0f"

    # 線のスタイル指定.以後,スタイル番号を指示すればこの設定の線が表示.
    set linestyle 1 lc rgb 'black' lt 1 lw 1 # 実線(黒)
    set linestyle 2 lc rgb 'gray60' lt 1 lw 3 # 実線 太(グレー)
    set linestyle 3 lc rgb 'black'lt 1 lw 1 dt (15, 10) # 破線(黒)
    set linestyle 4 lc rgb 'gray40' lt 1 lw 2 dt (5, 5, 15, 5) # 一点鎖線(グレー)

    # 矢印のスタイル指定.以後,スタイル番号を指示すればこの設定の矢印が表示.矢印の大きさ,線の種類・太さ,先端形状などを指定.
    set style arrow 1 size character 1.0,15 ls 1 filled
    set style arrow 2 size character 1.0,15 ls 4 filled

    # 矢印の挿入.始点・終点,使用するスタイルの番号(もしくはココで矢印情報入力).
    set arrow 1 from -5, 25 to 5, 25 arrowstyle 1
    set arrow 2 from 1.4, 13.4 length 5 angle -45 arrowstyle 2

    # 文字の挿入.位置指定.文字種類・サイズを変更の場合,後ろに記述.回転させる場合も記述.
    set label 1 '{/Times-Italic y}={/Times-Italic x}^2/5' at -6, 5 rotate by -45

    # 関数
    f(x)=x*x/5

    # 図へのプロット. 関数(もしくは読み込むデータの位置)を指定.線・点の記述.凡例に表示されるタイトルの記述.
    plot x<5 ? f(x):1/0 with lines ls 3 notitle, x>5 ? f(x):1/0 with lines ls 2 notitle



    # ②右下
    reset
    set origin 1.00, 0.00

    # 軸を指数に変換
    set log y

    set size 1.0,1.0
    set xlabel '{/Symbol-Oblique d}' offset 0.0,0.0 # ギリシャ文字の斜体
    set ylabel '{/Symbol-Oblique G}' offset 0.0,0.0
    set key at 19.0, 34
    set key spacing 1.5
    set key samplen 3

    # 軸の範囲指定
    set xrange [1.0:10.0]
    set yrange [1.0:10000.0]

    # 軸の目盛間隔の指定.
    set xtics 2

    # 軸の少目盛間隔の指定.
    set mxtics 2

    # 軸の数字指定."%.1f"は小数点第一位まで."10^{%L}"は10の何乗という表記.
    set format x "%.0f"
    set format y "10^{%L}"

    # 線のスタイル指定.以後,スタイル番号を指示すればこの設定の線が表示.
    set linestyle 1 lc rgb 'black' lt 1 lw 1 # 実線(黒)
    set linestyle 2 lc rgb 'gray60' lt 1 lw 3 # 実線 太(グレー)
    set linestyle 3 lc rgb 'black'lt 1 lw 1 dt (15, 10) # 破線(黒)
    set linestyle 4 lc rgb 'gray40' lt 1 lw 2 dt (5, 5, 15, 5) # 一点鎖線(グレー)

    # 関数
    f(x)=exp(x)/log(x)/4
    f2(x)=x*x*x*x/1.5

    # 図へのプロット. 関数(もしくは読み込むデータの位置)を指定.線・点の記述.凡例に表示されるタイトルの記述.
    plot f(x) with lines ls 4 notitle, f2(x) with lines ls 1 notitle



    # ③左下
    reset
    set origin 0.00, 0.00
    set size 1.0,1.0
    set xlabel '{/Times-Italic x}' offset 0.0,0.0
    set ylabel '{/Times-Italic y}' offset 0.0,0.0

    # 凡例
    set key left top

    # 軸の範囲指定
    set xrange [-10.0:10.0]
    set yrange [-1:10.0]

    # 軸の目盛間隔の指定.
    set xtics 5
    set ytics 5
    set xtics nomirror

    # 軸の少目盛間隔の指定.
    set mxtics 5
    set mytics 5

    # 軸の数字指定."%.1f"は小数点第一位まで."10^{%L}"は10の何乗という表記.
    set format x "%.0f"
    set format y "%.0f"

    # 線のスタイル指定.以後,スタイル番号を指示すればこの設定の線が表示.
    set linestyle 1 lc rgb 'black' lt 1 lw 1 # 実線(黒)
    set linestyle 2 lc rgb 'gray60' lt 1 lw 3 # 実線 太(グレー)
    set linestyle 3 lc rgb 'black'lt 1 lw 1 dt (15, 10) # 破線(黒)
    set linestyle 4 lc rgb 'gray40' lt 1 lw 2 dt (5, 5, 15, 5) # 一点鎖線(グレー)

    # 関数
    f(x)=x/2+3

    # 図へのプロット. 関数(もしくは読み込むデータの位置)を指定.線・点の記述.凡例に表示されるタイトルの記述.
    plot f(x) with lines ls 2 title "{/Times-Italic y} = {/Times-Italic x} / 2 + 3"



    # 最後にこれを忘れると表示されないので注意
    set nomultiplot

    # ここまで


    工学系論文のための図

    理系の論文において,図は非常に重要であり,図作成ソフトを使いこなすことは理系学生とって必須である.図の善し悪しは各々の人間のセンスに大いに依存するが,教科書や学術論文に掲載されているような図は,その多くがシンプルかつ分かりやすい. 理系らしい図を作製するに当たり,gnuplotが捨てがたい選択肢であることは間違いない. 開発が続いており,ネットでも情報が広く共有されている観点からも,gnuplotは理系の人間におすすめしたいソフトである.


  • <P>このページをご覧いただくにはフレーム対応のブラウザが必要です。</P>