====== gnuplot ====== ===== 概要 ===== * グラフ描画ソフト * 2次元だけでなく、3次元プロットも可能 * 読み方は「ニュープロット」らしい… * 様々な OS で利用可能 (それぞれの OS 用のプログラムが開発されている) * Excel のグラフ作成機能でもいいけど、こちらのほうが高機能 * 関数を描画可能 * バッチファイルを作ってしまえば、グラフのスタイルを維持したまま、データを差し替えることができる ===== グラフ ===== ==== 基本コマンド ==== * ''plot <データor関数> with <グラフタイプ> [オプション] [, <データor関数> with <グラフタイプ> [オプション] ...]'' * 二次元グラフを描画 * 複数のグラフを書く場合は、'','' で区切る * ''<データor関数>'' にはデータが入っているファイルのパスか、関数を指定する * ファイルのパスは ''"'' (ダブルクォーテーション) で囲まないとエラーになる * 関数の例 * ''x'': y = x * ''x ** 2'': y = x2 * ''sin(x)'': y = sin x * ''with <グラフタイプ>'' * ''with'' は ''w'' に省略可 * グラフのプロットタイプ (線、点、棒グラフなど) を指定 * ''line'' * 線でプロット * ''l'' に省略可 * ''dots'' * 点でプロット * ''d'' に省略可 * ''points'' * 大きめの点でプロット * ''p'' に省略可 * ''[オプション]'' * ''linewidth'' or ''lw'': 線の太さ * ''linestyle'' or ''ls'': 線のスタイル (事前に定義が必要) * ''linecolor'' or ''lc'': 線の色 * デフォルトの色定義から数字で指定する * 特定の色を指定したい場合は ''linecolor rgb "#9AFF23"'' のように ''rgb'' の後に、16進数による色の指定をする * 他のグラフのタイプでも色の設定は linecolor を使う * ''pointtype'' or ''pt'': 大きめの点の種類 (数字で指定) * ''pointsize'' or ''ps'': 大きめの点の大きさ * ''title'': 凡例用のラベルを指定 * plot sin(x) title * ''using'' or ''u'': データを指定した場合、何番目のデータを使うかを指定 * ''using 1:3'' は以下のデータの 1 番目 (1,2,3,...) と 3 番目 (0.1, -3.3, -5.6, ...) の列のデータを使う\\ 1 14.3 0.1 2 22.1 -3.3 3 33.5 -5.6 : : : * ''index'' or ''i'': 同一ファイル内にあるデータの何番目を使うかを指定 * C 言語の配列のように、0 から始まる数字を指定する * ''index 0'' は以下のデータの最初のデータ (1番目の列が 1,2,3) を使い、''index 2'' では 3 番目のデータ (1番目の列が21,22,23) を使う\\ 1 14.3 2 22.1 3 33.5 11 14.3 12 22.1 13 33.5 21 14.3 22 22.1 23 33.5 * 各データは 2 つの空行で区切る * ''splot <データor関数> with <グラフタイプ> [オプション] [, <データor関数> with <グラフタイプ> [オプション] ...]'' * 三次元グラフを描画 * 基本的には ''plot'' と同じ ==== 特殊なグラフ ==== === ヒストグラム === set style data histogram set style histogram rowstacked set style fill solid border rgb "black" set style line 1 lc rgb "red" lw 1 set style line 2 lc rgb "blue" lw 1 p "データ" u 2:xticlabel(1) w histograms fs solid ls 1, "" u 4 w histograms fs solid ls 2 * ''set style data histogram'': ヒストグラム形式でデータを扱う * ''set style histograms rowstacked'': 下から積み上げ * ''set style histograms clustered'': 同じ X 軸のデータを横に並べる * ''set style fill solid border rgb "black"'': 棒グラフの枠線の色 * ''set style line 1 lc rgb "red" lw 1'': 積み上げ1番目のデータは赤色 * ''set style line 2 lc rgb "blue" lw 1'': 積み上げ2番目のデータは青色 * plot 行について * 最初の ''u: xticslabel(1)'' を軸のデータとして、2番目のデータを積み上げ1番目としてプロット * 次のプロット: 4 番目のデータを積み上げ2番目としてプロット * 参考サイト: 棒グラフ: [[http://www.ss.scphys.kyoto-u.ac.jp/person/yonezawa/contents/program/gnuplot/bar-graph.html | gnuplotで棒グラフを書く - 米澤進吾 ホームページ]] === 二次元マップ === set pm3d map corners2color c1 set ticslevel 0 set cbrange [-10:10] set palette defined (-10 "red", 0 "white", 10 "blue") set xrange [-10:10] set yrange [-10:10] set xtics 1 mirror set ytics 1 mirror set cbtics 1 set xlabel "Foo" set ylabel "Bar" set cblabel "Hoge" set size ratio 1 set size 1.05 set lmargin 0 set rmargin 0 set tmargin 0 set bmargin 0 set origin -0.03,-0.03 unset grid unset key splot "hoge.dat" w pm3d ===== Tips ===== ==== 二次元マップのカラーバーの位置の調整 ==== set colorbox vertical user origin x,y size w,h * [[http://stackoverflow.com/questions/13494684/how-to-move-the-color-bar-of-a-heatmap-in-gnuplot | plot - How to move the color bar of a heatmap in gnuplot? - Stack Overflow]] ==== 目盛りの長さを設定する ==== * 全体 (x軸、y軸、z軸、カラーバー) の目盛りの長さの設定\\ set ticscale <大目盛りの長さ> [小目盛りの長さ] * 特定の軸のみ目盛りの長さを設定 (scale オプションを使う) * x軸\\ set xtics scale <大目盛りの長さ> [小目盛りの長さ] * y軸\\ set ytics scale <大目盛りの長さ> [小目盛りの長さ] * z軸\\ set ztics scale <大目盛りの長さ> [小目盛りの長さ] * カラーバー\\ set cbtics scale <大目盛りの長さ> [小目盛りの長さ] ==== 対数スケール ==== * 軸を対数スケールにする\\ set logscale AXIS [BASE] * ''AXIS'': 対数スケールにする軸 (''x'', ''y'', ''xy'') * ''BASE'': 対数の基数 * 参考サイト: [[http://www.gnuplot-cmd.com/axis/logscale.html | gnuplotコマンド集 - 対数スケール]] ==== 背景色を設定する ==== * 背景オブジェクトを設定する。set object 1 rect behind from screen 0,0 to screen 1,1 fc rgb "#000000" fillstyle solid 1.0 * ''#000000'' を 16進数のカラーコードで設定する。 * 参考サイト: [[http://miyabi-mathematics.hatenablog.com/entry/2017/01/25/212328 | gnuplotで背景色を黒にする - みやびの備忘録]] ==== その他 ==== * デフォルトの線を変更: [[http://power.mech.eng.osaka-cu.ac.jp/~takiyama/gnuplot-howto.html | 簡単GNUPLOT]] * スムーズカーブと値のラベル: [[http://newton.ph.unito.it/~moretti/gnuplot/plot7.html | gnuplot / plot (7)]] * ラベルの位置: [[http://www.ss.scphys.kyoto-u.ac.jp/person/yonezawa/contents/program/gnuplot/label.html#label-technique | gnuplotでグラフに文字を書く - 米澤進吾 ホームページ]] {{tag>アプリケーション}}