暇な理系大学生の備忘録

ちょっとしたことをつらつらと

gnuplotの使い方【応用編】

今回はy、もしくはx軸を共有したグラフの書き方を記したいと思います。

 

具体的にはこんな感じ

f:id:hima_b:20170506213825p:plain

複数の出力、測定結果を比較する際、

ディジタル波形などの比較などの際には有効に活用できると思います。

 

まずはスクリプト全文を載せます。

gnuplotスクリプトとは?という方は前回記事を見てください。

 

hima-b.hatenablog.jp

 


set multiplot layout 4,1
set datafile separator ","

set lmargin 0
set rmargin 0
set tmargin 0
set bmargin 0

set ytics 1
set xtics nomirror
set ytics nomirror

set xr[0:3e-4]
set yr[-0.2:1.2]

set size 0.8,0.20
set origin 0.1, 0.70
unset xlabel
unset ylabel
unset xtics
plot 'data.csv' using 1:2 with line linecolor -1 title 'ClockPulse'

set size 0.8,0.20
set origin 0.1, 0.50
unset xlabel
unset ylabel
unset xtics
plot 'data.csv' using 1:3 with line linecolor -1 title 'X0'

set size 0.8,0.20
set origin 0.1, 0.30
unset xlabel
unset ylabel
unset xtics
set ylabel '[V]'
plot 'data.csv' using 1:4 with line linecolor -1 title 'X1'

set size 0.8,0.20
set origin 0.1, 0.10
set xlabel 'time [s]'
unset ylabel
set xtics
set xtics nomirror
plot 'data.csv' using 1:5 with line linecolor -1 title 'X2'

unset multiplot
    

 まず最初、multiplotは縦に4つ、横に1つ表示する宣言になります。

それのペア的存在として最後にはunset multiplotと書きます。

その次のset ○margin 0というのはleft,right,top,bottomそれぞれの余白(グラフの枠の外)の幅の指定です。

すべて0にしておくとそれ以降のグラフが書きやすいので今回は0にしています。

 

ticsや描画範囲については過去の記事を。

 

set sizeはそのグラフ"1つ当たりの"大きさの指定です。"グラフ全体の"横と縦を1、1としたときの比率で指定します。

set originはその"グラフ1つの左下の座標"の場所を指定します。基準は"グラフ全体の"左下の座標を0,0としています。

 

あとは一つ一つグラフの設定を書いていけばok

一番下のx軸だけ表示して、それ以外は非表示にしています。

(x軸は共通なので)

もし共通幅のx軸でなくてもこのようなレイアウトでグラフを作成することはできます。

上のグラフは大きさ比率0.5、下のグラフの大きさ比率0.8のようなイレギュラーなグラフを作ることも可能ではあります。大きさや座標が指定できるので割と何でもできると思います。

一つのキャンパスに複数の絵を飾る感覚ですね。

 

例えば応用すればこういうのもできます。

f:id:hima_b:20170506221026p:plain

log(x)+1のグラフをxが1~10の範囲は線形表示、それ以降は対数表示というようなグラフも書けます。使い道があるかはわかりませんが...

 

今回はここらへんで。