gnuplotによるグラフ作成8~ファイルデータ読み込み
今回は実験データなどデータファイルからデータを読み込んでプロットする方法について紹介する。
1. 読み込みファイルの書式
まず、gnuplotで読み込むためのデータの書式は例えばdata.txt
の中身は以下のようなものになる。
#X Y Y2 0 1 6 2 5 10 6 8 15 8 15 18 10 22 30 15 50 40
読み込めるデータは数値で、文字は読み込めない。ただし#
を入れるとコメントアウトとなるため、上記の例では1行目に#を入れてデータ列名を表記している。
また、データ列が複数ある場合は、データ間にスペースを設けることが必要となる。上の例では、1列目をX軸, 2列目をY軸, 3列目をY2軸とする。
書式のルールを守っていれば、拡張子については特に制限がないが、通常は.txt
や.dat
などが使われることが多いと思う。
2. ファイルデータ読み込みとプロット
ファイルデータを読み込んでプロットするには、plot 'ファイル名'
とする。例えば
plot 'data.txt'
ファイルがgnuplotのカレントディレクトリにない場合は、ファイル名は'c:\data\data.txt'のようにフルパスで指定すればよい。 実行結果を以下に示す。
X軸とY軸の2次元XYプロットが得られるが、Y2軸に対しては何もプロットされない。どの列のデータをプロットするか指定するにはplot 'ファイル名' using n:m
を用いる。nはXYプロットのX軸にあたる列番号、mはY軸にあたる列番号となる。
plot 'data.txt' using 1:3
実行結果を以下に示すが、1列目がX、3列目がYの2次元XYプロットが得られる。
1列目と2列目、1列目と3列目を複数プロットしたい場合は、関数をプロットする場合と同様に
plot 'data.txt', 'data.txt' using 1:3
なお、1列目と2列目を指定するusing 1:2
に関しては省略できる。(1列目と2列目以外でプロットする場合は、usingで指定する必要あり)実行結果を下に示す。
また、XYプロットではなく単に1列目、2列目、3列目のデータを並べてプロットしたい場合はusing m
としてmはプロットする列番号で指定する。例えば
plot 'data.txt' using 1, 'data.txt' using 2,'data.txt' using 3
下のように列目、2列目、3列目のデータを並べてプロットされ、x軸はデータの行番号に対応する。
3. csvファイルの読み込みとプロット
csvファイルもデータファイルとしてよく利用される。csvファイルはデータ間がカンマ,
で区切られており、例えば適当に作成したtest.csvの中身は以下のようになっている。
1,1 2,4 3,9 4,16 5,25
読み込みファイルの書式として、データ間にスペースを入っていることが必要としていたが、区切りをスペースからカンマに変更することでcsvファイルのデータも読み込んでプロットすることができる。
区切りをカンマに変更するにはset datafile separator ","
とする。上のtest.csvをプロットするには以下のようにする。
set datafile separator "," plot 'test.csv'
以下のようにcsvファイルのデータもプロットすることができるようになる。なお、今度はデータファイルの書式がカンマ区切りになっているので、もとのseparatorをスペース" "に戻すか、あるいは" ,"とするとスペースとカンマ同時に指定できるようである。 gnuplot は異なる複数の separator (データ区切り) を同時に使える | ゴルディアスの涙目
4. まとめ
今回はデータファイルからデータを読み込む方法として、スペース区切りのテキストファイル、カンマ区切りのcsvファイルのデータをプロットする方法について紹介した。