GNUPlotで対数表示する.
$ set logscale x 10
10は対数の基数で10に設定するのであれば省略して良い.
2018年12月22日土曜日
2017年10月24日火曜日
gnuplotで.pltファイルを読み込み自動出力するサンプル
output.txtからデータ出力するサンプルです.
$> file = 'output'
$> output = 1
$> load "plotter.plt"
- グラフの大きさをmarginで指定する
- 軸ラベルをつける
- グリッドを表示する
- 凡例を移動させる
- 線のスタイルを変更する
- multiplotによって1つの図に2つのグラフを表示する
- if文処理により,変数output=1にセットした時のみ.epsファイルを出力する
- 参照ファイル名を用いて出力ファイルを作成する
等の内容を含みます.
plotter.pltの中身は以下の通りです.
# plotter.plt
set terminal wxt 0
reset
set lmargin 9
set rmargin 2
set xlabel "Time [sec]"
set ylabel "Position [m]"
set grid
set key left bottom
p [:][-2.5:2.5] file.".txt" u ($1):($4) w l lw 4 lc 2 title "Measured X", "" u ($1):($2) w l lw 3 lc 3 title "Desired X"
if(exist("output")&& output == 1)\
set terminal postscript eps color enhanced "Arial,20";\
set output file."_X.eps";\
p [:][-2.5:2.5] file.".txt" u ($1):($4) w l lw 4 lc 2 title "Measured X", "" u ($1):($2) w l lw 3 lc 3 title "Desired X";\
set terminal wxt 1
set key left bottom
p [:][-2.5:2.5] file.".txt" u ($1):($5) w l lw 4 lc 2 title "Measured Y", "" u ($1):($3) w l lw 3 lc 3 title "Desired Y"
if(exist("output")&& output == 1)\
set terminal postscript eps color enhanced "Arial,20";\
set output file."_Y.eps";\
p [:][-2.5:2.5] file.".txt" u ($1):($5) w l lw 4 lc 2 title "Measured Y", "" u ($1):($3) w l lw 3 lc 3 title "Desired Y";\
set terminal wxt 2
set multiplot layout 2,1
unset xlabel
set format x ""
set key left bottom
set tmargin screen 0.99
set bmargin screen 0.585
p [:][-2.5:2.5] file.".txt" u ($1):($4) w l lw 4 lc 2 title "Measured X", "" u ($1):($2) w l lw 3 lc 3 title "Desired X"
set format x
set xlabel "Time [sec]"
set key left bottom
set tmargin screen 0.535
set bmargin screen 0.13
p [:][-2.5:2.5] file.".txt" u ($1):($5) w l lw 4 lc 2 title "Measured Y", "" u ($1):($3) w l lw 3 lc 3 title "Desired Y"
unset multiplot
if(exist("output")&& output == 1)\
set terminal postscript eps color enhanced "Arial,20";\
set output file."_Layout.eps";\
set multiplot layout 2,1;\
unset xlabel;\
set format x "";\
set key left bottom;\
set tmargin screen 0.99;\
set bmargin screen 0.585;\
p [:][-2.5:2.5] file.".txt" u ($1):($4) w l lw 4 lc 2 title "Measured X", "" u ($1):($2) w l lw 3 lc 3 title "Desired X";\
set format x;\
set xlabel "Time [sec]";\
set key left bottom;\
set tmargin screen 0.535;\
set bmargin screen 0.13;\
p [:][-2.5:2.5] file.".txt" u ($1):($5) w l lw 4 lc 2 title "Measured Y", "" u ($1):($3) w l lw 3 lc 3 title "Desired Y";\
unset multiplot;\
undefine output
set terminal wxt 0
2017年2月7日火曜日
gnuplotで2系列データをmultiplotで上下に並べてx軸を揃えて比較する
タイトルの通りの内容です.制御入力と制御量を同時にグラフ出力するときにaxes xy2を使う方法がありますが,表示数が増えると見づらくなるので分けてしましたい.そこでmultiplotを使います.multiplotを使うと簡単に上下にグラフを並べられるのですが問題が2点.1)ラベルや軸目盛のせいでx軸の幅がずれる.2)時系列で上下に並べているので上のグラフのx軸のラベルと目盛が邪魔.ということで以下の通り処理してしまします.
set terminal wxt 0
reset
set lmargin 9 #x軸幅を揃えるためにグラフまでのマージンを決めてしまう(左側)
set rmargin 2 #右側のマージン
set ylabel "P[m], V[m/s], A[m/s2]"
unset xlabel #xラベルを削除
set format x "" #x目盛を削除
set grid
set multiplot layout 2,1 #multiplotの設定 layout 縦,横
p [:][-1:1] file.".txt" u 1:5 w l title "Xa", "" u 1:4 w l title "Xv", "" u 1:3 w l title "Xp","" u 1:2 w l title "Xdes"
set xlabel "Time [sec]" #x軸のラベルを再設定(下のグラフ用)
set format x #x軸の目盛を再設定(下のグラフ用)
set ylabel "Input"
p file.".txt" u 1:6 w l title "Input"
unset multiplot
ちなみに「file.".txt"」となっていますが,「file = 'name'」を設定しておけば「name.txt」がプロットされます.「.」は文字列の接続です.
set terminal wxt 0
reset
set lmargin 9 #x軸幅を揃えるためにグラフまでのマージンを決めてしまう(左側)
set rmargin 2 #右側のマージン
set ylabel "P[m], V[m/s], A[m/s2]"
unset xlabel #xラベルを削除
set format x "" #x目盛を削除
set grid
set multiplot layout 2,1 #multiplotの設定 layout 縦,横
p [:][-1:1] file.".txt" u 1:5 w l title "Xa", "" u 1:4 w l title "Xv", "" u 1:3 w l title "Xp","" u 1:2 w l title "Xdes"
set xlabel "Time [sec]" #x軸のラベルを再設定(下のグラフ用)
set format x #x軸の目盛を再設定(下のグラフ用)
set ylabel "Input"
p file.".txt" u 1:6 w l title "Input"
unset multiplot
ちなみに「file.".txt"」となっていますが,「file = 'name'」を設定しておけば「name.txt」がプロットされます.「.」は文字列の接続です.
2017年2月3日金曜日
gnuplotで時系列の3次元軌跡をgifに出力する
2次元データ,3次元データを時系列で表示する方法としてgnuplotでgif形式で出力するという方法をとります.以下で終わらせます.
gnuplot> load plotter.plt
plotter.pltの中身は
##ここから
if(exist("n")==0 || n<0)\ ##初期化のための条件式
reset;\
reset;\
set xlabel "x [m]";\
set ylabel "y [m]";\
set zlabel "z [m]";\
\
\
set xrange [-1:1];\
set yrange [-1:1];\
set zrange [0:2];\
\
unset key;\
set ticslevel 0;\
\
set grid xtics ytics ztics;\
\
set terminal gif animate;\
set output "output.gif";\
\
n = 0;\ #データの最初の行
n1 = 10000;\ #データの最後の行
dn = 100;\ #時系列の処理間隔
wn = 1000 #1度に表示する行数
##プロットする内容
sp "output.txt" every ::n::(n+wn) u 1:2:3 w l
#ループ処理
n = n + dn
if ( (n+wn) < n1 ) reread
#終了処理
undefine n
set terminal wxt
##ここまで
n行目から(n+wn)行目までを表示することを繰り返す,という処理をしています.繰り返し処理に"reread"を使用していますが,これはファイルの頭から実行し直すので,初期化処理に関連する部分は条件式を作ってあげる必要があります.n行目から(n+wn)行目までを表示するためには"every ::n::(n+wn)"としていますが,
every ::開始行::終了行
です."every"はもう少し他の使い方もありますが,現状必要な情報は上記のみでした.
また,gifということでファイルサイズに注意が必要になります.画像の枚数,すなわちおおよそ(n1/dn)枚が大きくなりすぎると再生するためにマシンパワーによっては悲鳴を上げ始めるので注意してください.
※実時間になっていません.実時間ぽくするためには
set terminal gif animate delay 数字
でフレーム時間が(数字/100) secになるので(デフォルトは5),dnに合わせて適宜調節をしてください.
※実時間になっていません.実時間ぽくするためには
set terminal gif animate delay 数字
でフレーム時間が(数字/100) secになるので(デフォルトは5),dnに合わせて適宜調節をしてください.
2016年1月30日土曜日
gnuplotの参照データ数が多く重い場合にデータを間引く
gnuplotで参照するデータ数が多過ぎて,表示の処理が重い場合がある(行数が数万行のとき).サンプリング周波数に比べサンプルデータの周波数が十分に低い場合,データを間引いて構わないだろう.gnuplotでは指定数行ごとにプロットすることが可能である.
$ p [x1:x2][y1:y2] "./data.txt" u 1:2 ev 100 w l
「ev 100」は100行毎にデータを使用する,の意味.
$ p [x1:x2][y1:y2] "./data.txt" u 1:2 ev 100 w l
「ev 100」は100行毎にデータを使用する,の意味.
2015年8月27日木曜日
gnuplotでy軸を2軸で表示する方法
y軸を2軸表示する方法です.細かい好みの設定込みです.
line colorは赤(1)・緑(2)にするより,赤(1)・青(3)にする方が良いです(色盲の人に配慮して).
$ set ytics nomirror
$ set y2tics
$ set xlabel "{/=30 xlable}"
$ set ylabel "{/=30 ylable}"
$ set y2label "{/=30 y2label}"
$ set logscale x
$ set xrange [x1:x2]
$ set yrange [y11:y12]
$ set y2range [y21:y22]
$ p "./file.txt" u 1:2 w linespoints lt 1 lc 1 lw 4 pt 1 ps 3 title "title", "./file.txt" u 1:3 w lp lt 1 lc 3 lw 4 pt2 ps 3 title "title2" axes x1y2
タイトルの内容で重要なのは1,2行目と最後の行の最尾です.
line colorは赤(1)・緑(2)にするより,赤(1)・青(3)にする方が良いです(色盲の人に配慮して).
$ set ytics nomirror
$ set y2tics
$ set xlabel "{/=30 xlable}"
$ set ylabel "{/=30 ylable}"
$ set y2label "{/=30 y2label}"
$ set logscale x
$ set xrange [x1:x2]
$ set yrange [y11:y12]
$ set y2range [y21:y22]
$ p "./file.txt" u 1:2 w linespoints lt 1 lc 1 lw 4 pt 1 ps 3 title "title", "./file.txt" u 1:3 w lp lt 1 lc 3 lw 4 pt2 ps 3 title "title2" axes x1y2
タイトルの内容で重要なのは1,2行目と最後の行の最尾です.
2014年6月7日土曜日
gnuplotで棒グラフを描く
gnuplotで棒グラフを描くコマンドです.棒グラフなのでx軸は数値ではなく項目という設定で行います.データの形式を
「項目 数値」
とします.
$ set style fill solid
$ set boxwidth 0.5
$ plot [-0.5:n+0.5][:] "data.txt" using 0:2:xtic(1) with boxes notitle
一行目は棒グラフの塗りつぶしを指定します.
二行目は棒グラフの幅を指定します.1だと隣の項目と接してしまい見辛いかと思います.
三行目がプロットです.x軸の表示を±0.5しておくと見やすいです.xtic(1)でx軸の項目名をデータの一列目に指定します.with boxesが棒グラフの指定です.
2014年6月5日木曜日
Gnuplotで指定範囲の背景を塗りつぶす
グラフを描く時に,y軸方向にこの範囲に数値が入っていれば良い,ということを伝える為に,グラフの指定範囲の背景に色を入れる.方法としてはその範囲に長方形オブジェクトを配置する.
$ set object 1 rect from graph 始点x, graph 始点y to graph 終点x, graph 終点y back linewidth 0 fillcolor rgb "cyan" fill solid 0.5
“set object 1 rect” で長方形の指定
“from graph 始点x, graph 始点y” で長方形の左下の頂点を指定
“to graph 終点x, graph 終点y” で長方形の右上の頂点を指定
頂点の指定はグラフ中の割合で行う.
“back” で背面に配置
“linewidth 0” は辺の線幅を指定
“fillcolor rgb "cyan"” で色指定
“fill solid 0.5” で透明度の指定
$ set object 1 rect from graph 始点x, graph 始点y to graph 終点x, graph 終点y back linewidth 0 fillcolor rgb "cyan" fill solid 0.5
“set object 1 rect” で長方形の指定
“from graph 始点x, graph 始点y” で長方形の左下の頂点を指定
“to graph 終点x, graph 終点y” で長方形の右上の頂点を指定
頂点の指定はグラフ中の割合で行う.
“back” で背面に配置
“linewidth 0” は辺の線幅を指定
“fillcolor rgb "cyan"” で色指定
“fill solid 0.5” で透明度の指定
2013年12月25日水曜日
Gnuplotのグラフ中の表示サイズを変更する
Gnuplotで点の大きさや線の太さ,文字表示を変更する方法に付いて.
点や線はwith(w)以降に…
pointsize(ps) ?:点の大きさ
pointtype(pt) ?:点の種類
linewidth(lw) ?:線の幅
linetype(lt) ?:線の種類
linecolor(lc) ?:線の色
(?には数字)
軸ラベルなどの変更はeps出力のときに行います.
まずラベルでは
% set xlable "{/=30 label}"
とすると30のフォントサイズになります.
次にeps出力のterminal設定で,
% set terminal postscript eps color enhanced "Arial" 25
enhancedは拡張設定,Arialの部分に好みのフォントを,25にフォントサイズを代入します.
ちなみにこのterminal設定では,全体の出力サイズがA4みたいですね.
点や線はwith(w)以降に…
pointsize(ps) ?:点の大きさ
pointtype(pt) ?:点の種類
linewidth(lw) ?:線の幅
linetype(lt) ?:線の種類
linecolor(lc) ?:線の色
(?には数字)
軸ラベルなどの変更はeps出力のときに行います.
まずラベルでは
% set xlable "{/=30 label}"
とすると30のフォントサイズになります.
次にeps出力のterminal設定で,
% set terminal postscript eps color enhanced "Arial" 25
enhancedは拡張設定,Arialの部分に好みのフォントを,25にフォントサイズを代入します.
ちなみにこのterminal設定では,全体の出力サイズがA4みたいですね.
2013年12月19日木曜日
Gnuplotでeps出力する
よく使うはずなのに忘れがちなGnuplotのeps出力.さらっと行きます.
% set terminal postscript eps color
% set output "output.eps"
% replot
% set terminal wxt
replotでは最後に行ったplotを呼び出します.
% set terminal postscript eps color
% set output "output.eps"
% replot
% set terminal wxt
replotでは最後に行ったplotを呼び出します.
Gnuplotで標準偏差付き点グラフを描く
グラフを書くならGnuplot.Excelなんてもってのほか.Gnuplotが美しい.
しかし,Gnuplotはコマンド打ち込みだから知らない機能だらけで,調べても忘れてしまうことが多いです.
本エントリは標準偏差(Error bar)の付け方について.
まずデータファイルhogehoge.txtの構成は
x1 y1 標準偏差1
x2 y2 標準偏差2
…
とします.
Gnuplotで
% p "hogehoge.txt" u 1:2:3 w e
です.省略形を使わないと
% plot "hogehoge.txt" using 1:2:3 with errorbar
です.errorbarのところは
errorbar
errorbars
yerrorbar
yerrorbars
でも可能です.xerrorbarにするとx軸方向のError barが付きます.
しかし,上記のコマンドでは点が - で見にくいです.そこで,
% p "hogehoge.txt" u 1:2:3 w e pt 6
にします.省略無しは
% plot "hogehoge.txt" using 1:2:3 with errorbar pointtype 6
です.point type 6では○が点に使われます.2だと×,5だと■など,数字を帰ることで点の形を選べます.
また,Error barの横線が短くて見づらい場合は
% set bars 5
などとすれば良いです.
以上.
しかし,Gnuplotはコマンド打ち込みだから知らない機能だらけで,調べても忘れてしまうことが多いです.
本エントリは標準偏差(Error bar)の付け方について.
まずデータファイルhogehoge.txtの構成は
x1 y1 標準偏差1
x2 y2 標準偏差2
…
とします.
Gnuplotで
% p "hogehoge.txt" u 1:2:3 w e
です.省略形を使わないと
% plot "hogehoge.txt" using 1:2:3 with errorbar
です.errorbarのところは
errorbar
errorbars
yerrorbar
yerrorbars
でも可能です.xerrorbarにするとx軸方向のError barが付きます.
しかし,上記のコマンドでは点が - で見にくいです.そこで,
% p "hogehoge.txt" u 1:2:3 w e pt 6
にします.省略無しは
% plot "hogehoge.txt" using 1:2:3 with errorbar pointtype 6
です.point type 6では○が点に使われます.2だと×,5だと■など,数字を帰ることで点の形を選べます.
また,Error barの横線が短くて見づらい場合は
% set bars 5
などとすれば良いです.
以上.
登録:
投稿 (Atom)