Sublime Text 経由でgnuplotを使う

Sublime Textとgnuplotを連携させれば,開いてるcsvファイルからグラフ描ける,それって便利じゃね?

というわけで,今回は連携の第一歩として,Sublime Textのbuild systemを使って編集しているdatファイル(csvみたいなの)からepsファイルを作成する方法についてまとめる.

※今回の内容では軸ラベルなどの設定は手動で行う必要がある.すなわち,gpファイルを作成してわちゃわちゃするのと大差はない. だけど,ファイル名くらいは変えれるし,コマンドを毎回打つのは面倒だし,Sublime Textはいつも開いてるからコマンドプロンプト代わりにはなるはず.

準備段階として

本稿の内容をやる前に入れとかないと駄目

  • Sublime Textをインストールする
  • gnuplotをインストールする.
  • 何らかのepsを開くソフトを用意する(作成する図をpngとかにすれば不要)

今回の内容の3ステップ

  1. batファイルを呼び出すためにsublime-bulidファイルを作成する
  2. gpファイルの代わりになるbatファイルを作成する.
  3. ctrl + Bでepsが作成される.

詳しいやり方

sublimetextで図を作成する文を書くためにはまず,その文がcmdで使えるかを確認する.

コマンドプロンプトからgnuplotを開く

cmdで適当な数式のグラフを見たい場合

   > gnuplot -e "plot sin(x);pause -1"

このpause -1がないと一瞬でグラフ描画を終えるので必須

cmdでplt(gp)をloadしたい場合

> gnuplot -e "load `test.plt`"

ちなみにtest.pltの中身は以下.

set title "this is test"
plot sin(x)/x

以上から,cmdでgnuplotが開けることが理解できる.

Sublime Textのbuild systemから図を作成する

例にもよって,sublime-buildに直接起動文を書きたいがうまくいかないのでbatファイルから起動する.

sublime-buildの中身

開くだけ;

{
    "cmd": [
        "${packages}\\User\\gnuplot.bat","$file_base_name"
    ],
    "shell":true
}

gnuplot.sublime-buildとか名前つけて保存. 作成した図を開きたい場合は適当に起動するための文を追加する.

gnuplot.batの中身

今回は保存形式:epsでoutputするファイルの名前を編集しているdat(csv)ファイルの名前にした2列のデータを対象にbatファイルを設定する.

@echo off
set PATH=%~d0\usr\gnuplot\bin;%PATH%
start gnuplot -e "set terminal postscript eps color enhanced;set output '%1.eps';plot '%1.dat' using 1:2 notitle w l;"
exit /b 0

呼び出す場合は;で改行になるらしいので,ラベルの設定とかも足そう. 軸の名前が変わるたびにbatファイルを設定し直す必要があるが. まぁ今回は基本構成で動くの確認できればokなのでこれで問題なし.

実行結果

念のためgnuplot/demoにある1.datを用いてグラフの描画を確認する. 1.datを開いた状態でctrl + Bで同じディレクトリにepsファイルが作成される.

f:id:ryuna_tec:20170515141512p:plain:w500

※ブログに載せる都合上pngにして作成している.

という感じでeps画像が作成できることが確認できる.

まとめ

Sublime Textのbuild systemを使って内部でgnuplotを開いて図を作れるようになった. そんなに便利じゃないけど2列のcsvとかならエクセル開いてグラフ作成よりか高速で波形の確認ができるね.

batファイルからcsvとかdatファイルの先頭にある軸ラベルとかの内容が読み込めたら強いんだけどなぁ.

余談だけど,markdown方式で書いてるけどあんまりいい感じに出力されてくれない.書き方を教えてほしいです.