gnuplotを使ったグラフの描画

近年技術の発達とともに,オシロスコープにもいろいろな機能が追加されるようになってきています.
その一つにUSBメモリがぶっさせることが挙げられます.この機能を使うと表示されているデータをUSBメモリCSVファイルに保存でき,データをPCで確認することが可能となりました.
今回はそのCSVファイルからEPS画像を作成することが目的です.
csvファイルはexel等の表計算ソフトで読み込むことが出来,それを用いればグラフを作成することが出来ます.また,gnuplotと呼ばれるグラフ描画ソフトを用いることによりグラフを生成する方法もあります. この2つのやり方について特徴を次の表にまとめます.
方法特徴長所短所
exelによるグラフ作成簡単波形の調整をしながらグラフを見ることが出来るファイルが増えてくるといちいち開くのが面倒になる
gnuplotによるグラフ作成見栄えがよいギリシャ文字等も美しく表現できる作成するのにgpファイルが必要で,グラフごとにgpファイルを作成しなくてはならない
時間がかかったり,gpファイルのような中間ファイルが増えてきてフォルダを圧迫するのではスマートでありません.
また,ファイルを増やさないために毎度gpファイルを書き換えるのならばそれこそ時間がかかってしまいます.
それでも,きれいにかつ短時間でグラフを生成したいような場合は必ずあります.
そこで,今回はC言語力を借りてこれを解決しようと思います.
具体的には,同じようなグラフいくつも作成するとき,グラフ名やX軸,Y軸の最大値,グラフの値のみを変化させてcsvから直接eps画像の生成を行います.
これからプログラムを紹介する前に,プログラムを走らせる前の前提条件を以下にまとます.
  1. bcc compilarなどのCプログラムをコンパイルする環境が整っていること
  2. gnuplotがPCに入っていてパスもとおっていること
  3. そもそもepsファイルが見れること.(gsview等のソフト)
  4. ある程度C言語の知識があること
C言語にはパイプと呼ばれる機能が存在します.これはCのプログラムが動作中にプログラム内で別のプログラムを呼び出す.といったものです.今回はこれを用いてcのプログラムが動作中にgnuplotを起動し,項目をfprintfによりgnuplotに直接入力して波形を出力させます.
では,プログラムを以下に示します.
プログラムの流れは以下の通り.
  1. コマンドライン引数の数が正しいかチェック
  2. コマンドライン引数の2つめに入れたcsvファイルを開く
  3. 波形のX値,Y値を読み込む
  4. csvファイルを閉じる
  5. パイプでgnuplotを開く
  6. gnuplotに各項目を入力していく
  7. 波形データを入力
  8. eps画像を出力
  9. gnuplotを閉じる
実行するときは csv2eps ???.csv nameと入力して実行します.???.csvには一列目に時間,二列目に振幅が格納されていて,データ同士がコンマ区切りの物を使います.nameにはグラフに付けたい名前等(出力されるepsファイルの名前)を入力します.
では,例をのせます.次のような5点の時間対振幅波形が格納されたdata.csvからグラフpr1を作成したい場合.
0,5 10,100 50,50 60,5 120,55
コマンドラインでは次のように入力します.
csv2eps data.csv pr1
実行すると次のようなeps画像が出力されます. pr1.png 図より,各点における時間と振幅のグラフが作成できていることがわかります.また見た目も美しく仕上がっています. このようにプログラムを用いれば簡単にepsファイルを作成することが出来ました.またgnuplotの長所も生かすことが出来たといえます. gnuplotでは折れ線グラフのほかにも棒グラフや対数グラフ,3次元グラフなどいろいろなことが出来ます.gnuplotTeXライフを楽しく過ごしましょう!