Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【gnuplot】グラフの任意の場所に点や直線を描きたい

以前、グラフの任意の場所に直線を引く方法は書いた気がする

■ 参考 : 【gnuplot】軸に平行な直線を引きたい


まずは任意の場所に点を打つ方法
labelというのを活用する

set label 1 point pt 7 ps 3 lc rgb "light-red" at 6479, 1
みたいな感じでOK
labelのあとの通し番号を増やして行けば、点の数も増やせる
最後のat以降はそのまま(x, y)座標の値に相当する
"light-red"はデフォルトの色だったかは忘れた
なければ"red"とかにしておく

■ 参考 : グラフ上への任意の点のプロット



もう一つ、任意の場所に直線を描く方法

set arrow 1 nohead from 6789, -0.1 to 6789, 0.1 lw 1
これで(6789, -0.1)から(6789, 0.1)まで直線を引ける
またarrowの後の通し番号を増やせばいくつも書ける
lc 2とかで色を指定することも可能

■ 参考 : 任意の線を書く

nohead で矢印の先っぽを消している
矢印の形状の選択肢は次のページによくまとめられている

■ 参考 :矢印の描画と矢印のスタイル



こんな感じにできるはず


set arrowで矢印を書いてから、何かプロットをしたときグラフに表示される順番的にはarrowの方が下に来てしまう
そういうときは

set arrow 1 nohead from 6789, -0.1 to 6789, 0.1 lw 1 front
のようにfrontをつければOK

逆に背景に回り込ませたいときは、backを付ける

■ 参考 : Arrow


また、arrowにlabelを付ける機能はないため、
自分で

set label 1 "hoge" at 2, 0
のようにして付けないといけない
このとき、通し番号の1を忘れるとどんどん増えていくので注意

■ 参考 : How to add text to an arrow in GnuPlot



ここに追記すべきではないきがするんだけどここに書く

set label 1 "hoge" right at 2, 0
set label 1 "hoge" center at 2, 0
set label 1 "hoge" left at 2, 0
とleft / center / right と場所を3つ選べる
これは、labelの枠のleft / center / right を指定した場所に持っていくいくことに相当する
要するに右詰め、中央揃え、左詰め、みたいなものか

割と役に立つ

ランキング参加中です

↓クリックしていただけると嬉しいです〜