ExcelのデータをGnuplotで利用したいと思った経験はないでしょうか。理系大学生あたりなら多いと思うのですが、データを打ち直すのが面倒!簡単にする方法はないの?ということが多いと思うので簡単にGnuplotにデータを取り込む方法を紹介します。
目次
ExcelのデータをGnuplotで利用するためデータの準備
はじめにExcelのデータを利用するためのデータを用意します。Excelのフォーマットは直接Gnuplotで読めないので、変換というか使う部分だけ取り出す必要があります。
今回は説明にWindowsのPCを用いてお話します。使用しているのはExcel 2019です。Office Professional Plusに入ってたやつです。実際にグラフを書くのに使ったのはWindowsではなくRaspberry PiのRaspbian(debian系)です。
では早速ですが使いたいデータのあるExcelのデータを開いてください。そして使いたいデータの範囲だけを選択してコピーしてください。このとき数値データのみを選択すると無用なエラーなどを防止できます。凡例は後で追加できるので気にしないでいきます。
次にメモ帳を開いて貼り付けます。貼り付けると以下のような感じでTab文字で区切られたきれいなデータになっていれば大丈夫です。
3.20 13.5 270 351.1 1755.5 0.63 115.82 0.025 0.221 0.248
3.30 14.0 280 345.6 1728.0 0.90 162.86 0.040 0.223 0.336
3.40 25.0 500 340.5 1702.5 1.97 351.22 0.054 0.386 0.406
3.60 31.0 620 335.5 1677.5 2.87 504.17 0.068 0.452 0.469
3.80 37.0 740 329.6 1648.0 3.31 571.23 0.084 0.511 0.446
4.00 44.0 880 323.4 1617.0 3.56 602.82 0.102 0.577 0.395
4.20 51.0 1020 316.2 1581.0 4.27 706.95 0.122 0.637 0.400
4.60 59.5 1190 309.5 1547.5 5.01 811.89 0.140 0.679 0.394
5.00 68.0 1360 301.3 1506.5 5.90 930.79 0.163 0.714 0.395
5.40 77.5 1550 292.5 1462.5 7.17 1098.10 0.188 0.753 0.409
5.90 88.0 1760 282.7 1413.5 8.30 1228.58 0.215 0.783 0.403
好きな名前で保存すればいいのですが、いわゆるTSVというフォーマットなので.tsvという名前で保存しておきます。
これで事前準備が完了となります。
Gnuplotで読み込むためのスクリプトを用意
これに関しては実際に作成したいグラフによって内容が変わるので私の例を参考に説明します。私は以下のようなスクリプトを作成しました。
reset
set datafile separator "\t"
set terminal pngcairo size 1280,960
set output 'test.png'
set multiplot
set xrange [0:1300]
set xlabel "出力P_o_u_t[W]"
set lmargin screen 0.10
set rmargin screen 0.87
set yrange [0:10.0]
set ytics 1
set ylabel "一次電流I_1[A] , トルクT[N・m]" offset 2,0 textcolor rgb 'black'
set key at 1300,10
plot 'experiment2.tsv' using 7:1 with points lt rgb 'red' title "I_1"
plot 'experiment2.tsv' using 7:1 with points lt rgb 'red' smooth csplines title "I_1"
set key at 1300,9.7
plot 'experiment2.tsv' using 7:6 with points lt rgb 'dark-green' title "T"
plot 'experiment2.tsv' using 7:6 with points lt rgb 'dark-green' smooth csplines title "T"
set ytics 0.1
set yrange [0:1.0]
set ytics offset -5,0
set ylabel "効率η , 力率cosθ" offset -3,0 textcolor rgb 'black'
set key at 0,1
set key at 1300,0.94
plot 'experiment2.tsv' using 7:9 with points lt rgb 'blue' title "cosθ"
plot 'experiment2.tsv' using 7:9 with points lt rgb 'blue' smooth csplines title "cosθ"
set key at 1300,0.91
plot 'experiment2.tsv' using 7:10 with points lt rgb 'green' title "η"
plot 'experiment2.tsv' using 7:10:(0.1) with points lt rgb 'green' smooth acsplines title "η"
set y2tics 200 offset -1,0
set y2range [0:2000]
set y2label "回転数N[rpm]" offset -3,0 textcolor rgb 'black'
set key at 1300,0.88
plot 'experiment2.tsv' using 7:5 with points lt rgb 'violet' axis x1y2 title "N"
plot 'experiment2.tsv' using 7:5 with points lt rgb 'violet' axis x1y2 smooth csplines title "N"
set y2tics 0.022
set y2range [0:0.22]
set y2tics offset 6,0
set y2label "滑りs" offset 3,0 textcolor rgb 'black'
set key at 1300,0.85
plot 'experiment2.tsv' using 7:8 with points lt rgb 'gold' axis x1y2 title "s"
plot 'experiment2.tsv' using 7:8 with points lt rgb 'gold' axis x1y2 smooth csplines title "s"
unset terminal
unset multiplot
exit
誘導電動機機に関する実験のデータを用いています。そのため効率だとか力率なんて言葉が書いてあります。色々書いてはいますが、やりたいことはデータをプロットしpngで画像を出力するというだけです。キモとなるのは2行目の、
set datafile separator "\t"
この部分です。事前に用意したデータの形式がTab区切りになっているので、区切り文字をTab文字にすることで正しく読み込めるようになります。
あとは軸凡例などを設定して、点をプロットするだけです。プロットの際は14行目のようにします。
plot 'experiment2.tsv' using 7:1 with points lt rgb 'red' title "I_1"
experiment2.tsvという名前で私データを保存していたのでこれを読み込むようにしています。gnuplotのターミナルのディレクトリによって相対パスだと違うものを読んでしまうこともあるので、絶対パスで指定すれば確実かと思います。
using 7:1というのは"experiment2.tsv"の7つ目をx軸に、1行目をy軸にとってプロットするということですね。
ほかの部分は色や線種の指定なのでご自身の環境に合わせてください。
あとはご自身の書きたいグラフについて記述を行えばスクリプトの用意は完了です。
実際に描いてみる
Gnuplotを立ち上げ、さきほど用意したスクリプトを読み込みます。
$ gnuplot
gnuplot> load 'experiment.txt' //自分で用意したファイル名にしてください
これで私のスクリプトだとグラフを書けます。
実行結果は以下のようになりました。
あとは実際にやってみるしかないのですが、もし不安であれば私が今回紹介したデータとスクリプトで書いてみてください。これは私の環境ならできたものなので間違いはないはずです。
まとめ
簡単に処理フローをまとめると、以下のような手順になっています。
- Excelでデータの範囲を選択してコピー
- メモ帳に張り付けて名前を付けて保存
- Gnuplotで読み込むことができるようにスクリプト内で区切り文字をTab文字にする。
- 書きたいグラフになるようにスクリプトを書く
- 実行する
という手順で慣れてさえしまえばとても簡単にExccelのデータをGnuplotで利用することができます。コピーしてメモ帳に張り付けるという作業だけが増える手間みたいなもので、それ以降は普通にgnuplotを使うときと同じなのでかなり取り込む手間は少ないです。
実際やってみると結構楽だったので私は当分この方法を採用していこうと思いました。記事はこれでおしまいですお読みいただきありがとうございました。