7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gnuplotでcsvの1行目(見出し行)をプロットのタイトルにする

Posted at

なにがしたい

csvファイルがこんな感じになっている事がよくある

		1列目		2列目	3列目	4列目		n列目
1行目	横軸見出し	見出し1	見出し2	見出し3...	見出しn...
2行目	横軸1		値11	値21	値31...		値n1
3行目	横軸2		値12	値22	値32...		値n2
...

グラフのタイトルを「見出し」にしてプロットしたい。
gnuplotの他、awkを用いる。

2列目をプロット

テストデータを以下に与える
1列目のDateTimeに対して、複数の縦軸がn個並んでいるような形のあるあるcsv。

test.csv
DateTime,midashi1,midashi2,midashi3,midashi4,midashi5
2015-12-01 00:03:00,5,8,10,41,39
2015-12-01 00:08:00,4,7,9,35,58
2015-12-01 00:13:00,5,5,6,36,60
2015-12-01 00:18:00,4,7,9,36,59
2015-12-01 00:23:00,4,7,7,59,59
2015-12-01 00:28:00,4,5,7,36,60
2015-12-01 00:33:00,3,8,9,36,59
2015-12-01 00:38:00,4,7,10,36,59

縦軸midashi1を、横軸DateTimeに対してプロットするとき

file='test.csv'    #ファイル名指定

se g    #グリッドon
se xdata time    #横軸は時間データだよ
se timefmt "%Y-%m-%d %H:%M:%S"    #読み込む時間の形式
se format x "%m/%d\n%H:%M"    #x軸の表示方式
se datafile separator ","    #データ区切りを空白からコンマにする

p file u 1:2 w l    #fileの1列目に対して2列目をプロット

midashi_1.PNG

ちなみに
省略形式
se=set
g=grid
p=plot
u=using
w=with
l=line

2列目からn列目をプロット

awkを使ってn列目の値"n"を取得し、for文を使って1つのグラフに2からn列まで出力する。
awkの使い方はsprintfでコマンドを文字列にした後、systemコマンドで使用する。

file='test.csv'

se g
se xdata time
se timefmt "%Y-%m-%d %H:%M:%S"
se format x "%m/%d\n%H:%M"
se datafile separator ","

lastrow=system(sprintf('awk -F, "NR==1{print NF}" %s',file))    #最後の列はawkの組み込み変数NFで読み込んで変数lastrowに入れる
p for[i=2:lastrow] file u 1:i w l    #fileの1列目に対してi列目をプロット
								#iは2からlastrowまで変化

midashi_n.PNG

1行目(見出し行)の見出しをタイトルにしてプロット

awkを使って1行目を読み出し、i列目の値をタイトルにする。
iはfor文で2~最終列まで変化する。

file='test.csv'

se g
se xdata time
se timefmt "%Y-%m-%d %H:%M:%S"
se format x "%m/%d\n%H:%M"
se datafile separator ","

lastrow=system(sprintf('awk -F, "NR==1{print NF}" %s',file))
p for[i=2:lastrow] file u 1:i w l title system(sprintf('awk -F, "NR==1{print $%d}" %s',i,file))    #1行目の2列目~最後の列の文字列をtitleにする

midashi_title.PNG

7
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?