gnuplot(にゅ〜ぷろっと)のメモ

コマンドを利用してグラフを描くソフトです。大量にグラフを書きたいときなどは大変便利です。
いろいろと試したことをメモっていきます。

公式サイトはこちら(http://www.gnuplot.info/)。

gnuplotのインストールと日本語化

gnuplotを使うためには,プログラムを入手するだけでも良いですが,日本語化すると使いやすくなるでしょう。

gnuplotのダウンロード

Windows用の実行ファイル(バイナリ)は,sourceforgeで配布されています。

sourceforge gnuplot development
http://sourceforge.net/projects/gnuplot/

Windows用バイナリ ver 4.6.0の入手先(2013/04/10 現在)
http://sourceforge.net/projects/gnuplot/files/gnuplot/4.6.0/

いずれかをダウンロードして,インストールします。

インストーラなしの場合は,ダウンロード後に適当なフォルダへ解凍(Lhaplus等を利用すると便利)します。

日本語化キットのインストール

新潟工科大学の竹野先生が,長年にわたり日本語化キットの作成を進められています。 これをありがたく使わせていただきます。

日本語化キット入手先(新潟工科大学 竹野研究室)
http://takeno.iee.niit.ac.jp/~foo/gp-jman/gp-jman.html#wgpjp

この中から,同じバージョンのものをダウンロードします。
例えば 4.6.0なら wgp460-ja-20120311.zip

適当なフォルダに解凍(Lhaplus等を利用すると便利)して,フォルダの中身を,gnuplotフォルダのbinにコピーしします。

起動はwgnuplot.exeで。起動後,ウィンドウを右クリックして,Choose Fonts...で日本語のフォント(MSゴシックなど)を選び,下の文字セットを日本語にしてOK。
再びウィンドウを右クリックして,Update gnuplot.iniをクリック。これをしておかないと再びフォントの設定をし直す必要があります。

日本語のマニュアルは,新潟工科大学竹野研究室にて公開されていますので,こちらもありがたく使わせていただきましょう。個人的にはpdfファイルがおすすめですが,用途に応じて使い分けると良いかもしれません。

測定データをプロットしてみる

データファイルの書式

#SiO2 TiO2 Al2O3 FeO* MnO  MgO  CaO  Na2O K2O  Total
#index 0 (系列1)
72.99 0.07 11.51 1.05 0.06 0.11 1.19 3.41 3.17 93.56
72.76 0.09 11.63 1.15 0.12 0.14 1.06 3.43 3.01 93.37
72.16 0.07 11.32 1.07 0.09 0.12 1.07 3.51 3.00 92.40
72.37 0.16 11.80 0.94 0.10 0.11 1.09 3.47 3.00 93.03
72.93 0.15 11.55 1.24 0.12 0.11 1.10 3.48 2.93 93.60


#index 1(系列2)
72.72 0.08 11.63 1.13 0.10 0.11 1.10 3.56 3.12 93.56
73.11 0.06 11.65 1.28 0.09 0.13 1.05 3.37 3.15 93.90
73.03 0.04 11.62 1.11 0.07 0.12 1.05 3.53 3.19 93.76
70.77 0.05 11.32 1.24 0.04 0.14 1.05 3.30 2.94 90.84

2次元データのグラフ描画コマンド基本形

サンプル(eps形式)を出力する

set term postscript eps enhanced color
set output 'sample.eps'
test
set output
set term win

epsファイルの加工

出力したepsファイルでプロットした点の色を変えるVB Scriptです。
色は適当に変えてください(汗)
以下をeps色書き換え.vbsなどとして保存して,色を変えたいepsファイルをドラッグ&ドロップすると変わります。複数ファイルに対応してます。
"C:¥Documents and Settings¥ユーザー名¥SendTo"などに入れておくと,右クリックのメニューに入るので便利です。

スクリプト

'+=+=+=+=+=+=+=+=+=+=+=+=+
'   eps色書き換え.vbs
'+=+=+=+=+=+=+=+=+=+=+=+=+
 
Option Explicit

Dim FilePaths
Dim FileNo
Dim TempFileName
Dim EpsFile
Dim WritingTxt
Dim DataText(8)
Dim Fso
Dim i
Dim Temp


'定数の宣言
Const ForReading = 1 '読み込み
Const ForWriting = 2 '書きこみ(上書きモード)
Const ForAppending = 8 '書きこみ(追記モード)

Set Fso = CreateObject("Scripting.FileSystemObject")
Set FilePaths = Wscript.Arguments


  For FileNo = 0 To FilePaths.Count - 1
  	TempFileName = FilePaths(FileNo)
  	
    If Fso.FileExists(TempFileName) Then
    
      Set EpsFile = Fso.OpenTextFile(TempFileName, ForReading)
      
      ' 色の設定 { PL [] xxxxx xxxxx xxxxx DL } が色の設定
      ' Red Green Blueの順番で0≦x≦1で指定
      DataText(0) = "/LT0 { PL [] 0.9294 0.1098 0.1412 DL } def" '色1
      DataText(1) = "/LT1 { PL [] 0.9608 0.5098 0.1255 DL } def" '色2
      DataText(2) = "/LT2 { PL [] 1.0000 0.8039 0.0314 DL } def" '色3
      DataText(3) = "/LT3 { PL [] 0.4431 0.7490 0.2667 DL } def" '色4
      DataText(4) = "/LT4 { PL [] 0.0000 0.6588 0.5569 DL } def" '色5
      DataText(5) = "/LT5 { PL [] 0.0000 0.5843 0.8549 DL } def" '色6
      DataText(6) = "/LT6 { PL [] 0.1804 0.1922 0.5725 DL } def" '色7
      DataText(7) = "/LT7 { PL [] 0.5059 0.1608 0.3765 DL } def" '色8
      DataText(8) = "/LT8 { PL [] 0.7765 0.0863 0.5529 DL } def" '色9
      
      WritingTxt = ""
      
      With EpsFile
        Do Until .AtEndOfStream
          Temp = .ReadLine
          
          WritingTxt = WritingTxt & Temp & vbLf
          
          If Left(Temp, 4) = "/LTa" Then
            For i = 0 To 8
              WritingTxt = WritingTxt & DataText(i) & vbLf
              .SkipLine
            Next
          End If
        Loop
        .Close
      End With
      
      Set EpsFile = Fso.OpenTextFile(TempFileName, ForWriting)
      
      With EpsFile
        .Write WritingTxt
        .Close
      End With
      
      Set EpsFile = Nothing
    End If
  Next

Set Fso = Nothing
Set FilePaths = Nothing

test出力したepsファイルを色書き換えした結果

test.png

gnuplot 参考リンク