Gnuplot 使いかた

主に、gnuplotの文法について。過去の先輩が残してくださったものをこちらに書きました。

### 目次
＊基本
・描画方法
＊プロット行の編集
・複数のデータ書く
・プロットする種類
・プロットする太さ，大きさ，種類
・タイトル
＊描画色をかえる
＊凡例の位置
＊軸のこと
・範囲
・ラベル
・軸目盛の間隔変える
・Y2軸作る
＊gnuplot で文字書く
・文字を入れる
・文字の書きかた
・矢印を入れる
＊いろいろなグラフ
　・三次元のグラフ
　・カラーマップ
　・ベクトル図
　・おまけ
＊いろいろな関数
　・for文
　・every文

＊グラフをepsで変える
　・余分な軸の値を消す
　・凡例，ラベルの位置を変えたいとき，文字を回転させたいとき
　・凡例の位置，大きさなどを変える

□基本
描画方法
Gnuplot
追加コメント

以下のやり方を使わなくても、もっと速くできる。
やりかたは、予め 〇〇.gp なるファイルを作っておき、 call “〇〇.gp”をgnuplot上でやるだけ。詳しくは、以前に書いた以下の記事を読んでほしい。

https://qiita.com/mornel_respect/items/ecbb9c5eb61616ab3a35

gpファイルって何ですか？ → テキストファイルの一つ。
この方法が良い理由は、
・〇〇.pltのファイルを無駄に作らずに済む
・gnuplot上でいちいちこのファイルをプロットして、一の太さは…とやるより、gpファイルをメモ帳で開いて変更を加える方が楽
・いちいちchange directlyをしなくていい。なぜなら、gpファイルにchange directlyをするように予め書いておけばいいから。
・a.eps以外の名前に最初から作れる。

「ファイル」→「change directly(ディレクトリの移動)」→（描画させたいファイルの存在場所を選択）
```postscript:plotするとき
plot  ‘(ファイル名)’  using 〇:〇  with  lines
```

線じゃなくてドットとかで表示したいときは lines のところ points とか lp とかにする。これは後でも変えられる。


```postscript:複数のデータをプロット
plot \
‘(ファイル名)’ □ using 〇:〇 □ with □ lines ,\
‘(ファイル名)’ □ using 〇:〇 □ with □ lines ,\
…
```
プロットする種類（withの後）
線：lines
ポイント：points
線とポイント：lp
――――――――――――――――――――――――――――――――――――
lines ライン表示
points データポイント表示
linespoints ラインとデータポイント表示（折れ線表示）
impulses インパルス表示
dots ドット表示
steps ステップ表示
errorbars 誤差グラフ
boxes 棒グラフ
boxerrorbars 誤差と棒グラフ
――――――――――――――――――――――――――――――――――――

**グラフの描画の範囲指定**

機能コマンド
x軸, y軸とも指定しない　　plot exp(x) [Enter]
x軸の上限のみ指定, y軸は指定なし　plot [:9] exp(x) [Enter]
x軸の下限のみ指定, y軸は指定なし　　plot [1:] exp(x) [Enter]
x軸の上限と下限を指定, y軸は指定なし　　plot [1:9] exp(x) [Enter]
x軸は指定なし, y軸の上限と下限を指定　　plot [] [1:4] exp(x) [Enter]
x軸とy軸の上限と下限を指定　　plot [1:9] [1:4] exp(x) [Enter]

プロットする色
☆lc □ rgb “（好きな色の名前）” 
　　＊lineなどの指定の直後に入れる
プロットする太さ，大きさ，種類
線
点線にするとき
☆dashtype(〇,△)　またはdt (〇,△)
〇：線，△：空白
☆dt “〇”
〇：「．」「-」「_」とか．
太さ
☆linewidth 〇
ドット
種類変えるとき
☆pt 〇
太さ
☆pointsize 〇
タイトル
☆title “名前”
タイトルつけないとき
☆notitle
凡例だけつけて名前つけないとき
☆ title "□"


```python:描画色を変える
set palette rgbformulae 〇, 〇, 〇

# 7,5,15：黒，青，赤，黄
# 3,11,6：緑，赤，紫
# 23,28,3：緑，青，白
# 21,22,23：黒，赤，黄，白
# 30,31,32：黒，青，紫，黄，白
# 33,13,10：青，緑，黄，赤
# 34,35,36：黒，赤，黄，白
# 5,5,3：黒，紺，白
# set palette defined (〇 “好きな色”, 〇 “好きな色”)
```

```postscript:凡例の位置
set key 〇　〇
指定できるオプション
left：左側
right：右側
top：上側
bottom：下側
outside：図の右側の外
below：図の下側の外
```
凡例の行間を変えるときは
spacing 〇

```python:軸のこと
範囲（どの軸に対しても）
☆set 〇range [〇 : 〇]
ラベル
☆ set 〇label "名前"
軸目盛の間隔変える
☆set 〇tics 〇
※borderと書いてないほう
軸のメモリ消すときは
unset xtics
　軸の表記方法を変える
　　階乗表記にする
　　　☆set format y "10^{%L}"
set format x "10^{%L}"
　　　その他の表記方法
　　　　　機能　　　　　コマンド
全座標軸に書式gを設定　　　set format "%g" [Enter]
x軸に書式fを設定, 全2桁, 小数点以下1桁　　　set format x "%2.1f" [Enter]
y軸に書式eを設定, 全2桁, 小数点以下1桁　　　set format y "%2.1e" [Enter]
x軸とy軸に書式fを設定, 全4桁, 小数点以下2桁　　set format xy "%4.2f" [Enter]
現在の目盛りの数値の書式を確認　　show format [Enter]
　　　　ここで，gは自動，eは指数表記，fは普通の少数表記
Y2軸作る

☆set y2tics
このとき，プロットする全部のデータに対して，
☆axis x〇y〇
をつけて，どの軸使うか指定する
```

```python:gnuplot で文字書く
☆ set label 〇 at graph ●,● "書きたいこと"
〇：ラベル番号（複数入れるとき数を増やす）
●：入れ込みたい座標（各軸の端を1とした相対座標）
フォントの大きさを変えるとき最後に
☆ font"Times,〇"
を付け足す
文字の書きかた
・イタリックにする
☆ {/TimesNewRoman-Italic 書きたい文字}
・シンボル体で書く
☆ {/Symbol 書きたい文字}
・下付き文字，上付き文字
☆ {書きたい文字}@^{書きたい文字}_{書きたい文字}
```
```postscript:矢印を入れる
set arrow 〇 from 座標 to 座標
　　矢印の見た目を変えることもできる（以下を参照）
```



```postscript:いろいろなグラフ
　・三次元のグラフ
　　☆set pm3d
      Splot □ ‘(ファイル名)’ □ using 〇:〇:〇 □ with □ pm3d not
　・カラーマップ
　　☆set pm3d map
      Splot □ ‘(ファイル名)’ □ using 〇:〇:〇 
　・ベクトル図
　　☆plot □ ‘(ファイル名.vec)’ □using □ 〇:〇:〇:〇 □ with vector
　　　もし，大きさを変えたければ，
　　☆a=〇
plot □ ‘(ファイル名.vec)’ □using □ 〇:〇:($〇*a): ($〇*a) □ with vector
```
```python:その他
＜おまけ＞
　①Z軸の原点をxy平面上に持ってくる
　　☆set ticslevel 0
  を最終行に持ってくる
　②グラフの視点を変える
☆set view 回転１,回転２,グラフの拡大率,z軸の拡大率
□いろいろなグラフ
　・for文
　　☆for [intvar（整数変数）=start（初期値）:end（終了値）（:increment（増分）]]
　・every文
　　☆every I:J:K:L:M:N
　　　　　I：行の増分
J：データブロックの増分
K：プロットの開始行
L：プロットの開始データブロック
M：プロット終了行
N：プロットの終了データブロック
　　　　例文:)every 2 →1行おきにプロットする
Every ::3 →最初の三行を飛ばしてプロットする
Every ::3::5 →四行目から六行目までをプロットする
Every ::0::0 →最初の行だけをプロットする
Every 2::::6 →最初の七行を一行おきにプロットする
Every :2 →1データおきにプロットする
Every :::5:8 →5から8ブロックをプロットする
```
```python:グラフをepsで変える
　Epsファイルを秀丸でひらく
　・余分な軸の値を消す
　　その軸の数値の書かれている所の数値を消す
　　例文:) [ [(TimesNewRoman) 280.0 0.0 true true 0 ( 10)]←この10をけす
　・凡例，ラベルの位置を変えたいとき，文字を回転させたいとき
　　座標の値，translateの数値をかえる
　　例文:) 6500 3900 M←ここが座標の値
currentpoint gsave translate 0 rotate 0 0 moveto←ここのtranslateを変える
[ [(Symbol) 280.0 0.0 true true 0 (W)]
XYsave
[(TimesNewRoman-Italic) 224.0 -84.0 true true 0 (p)]
XYrestore
[(TimesNewRoman-Italic) 224.0 140.0 true true 0 (W)]
] -93.3 MCshow
　・凡例の位置，大きさなどを変える
　　例文:)0.00 0.00 1.00 C 2700 3500 M←下線部分が座標
600 0 V←下線部分が凡例の線の長さ
2167 1215 M
627 293 V
　　⋮　⋮　
627 265 V
2167 1215 BoxF
⋮　⋮　
4047 2090 BoxF　←ここらへんはグラフのプロット
4674 2364 BoxF
⋮　⋮　
6555 3176 BoxF
3000 3500 BoxF←下線部分が凡例の球？の座標（だいたい一番下が凡例の球を表す）
・epsで文字を加えるとき
例文:)LTb
ここから文字情報を入れて
3500 2520 M
[ [(ZapfDingbats) 450.0 0.0 true true 0 (H)]
[(TimesNewRoman) 280.0 0.0 true true 0 ( )]
] -93.3 MLshow
ここまでを変える
LCb setrgbcolor
```

**最後に**
バグが出たとき確かめよう(^^♪
グラフが描画されないとき
①読み込みファイルの改行がいいところでできているか
②読み込みファイルの最終的に開業があったら出ないこともある
グラフが開かない
①ファイル名がおかしい文字を含んでいる
　←一度ファイル名を『a.plt』とかにして確認してみる
②ファイル名が間違っている