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