====== 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>アプリケーション}}