実験系学者、学生の強い味方gnuplotの覚え書き。
python導入面倒だしcolab遅いから嫌だな~という人はぜひ検討を。
本編
- ~.pltファイルを作成。拡張子はtxtとかでもOK
- gnuplotに.pltファイルを読み込ませる
- ターミナル上で
gnuplot hogehoge.plt
とか入力すると読み込める。 - guiならFile->Openとかでいけるはず
- ターミナル上で
解説なし版
set terminal pngcairo enhanced font "Times New Roman,18" size 800,600
set grid
set datafile separator ","
set xlabel "X-axis"
set ylabel "Y-axis"
set title "Title"
unset key
set output "output.png"
plot "input.csv" skip 1 using 1:2 with line linecolor 0
解説
# hogehoge.plt
# pngと指定するとガビガビ画像になるのでpingcairoと指定して高画質にする。
# ほかの画像形式にしたい場合はpingcairoからjpegやepsとしておけばOK
# enhanced font "Times New Roman,18" はギリシャ文字まで含めてfontとfontsizeを設定してる
# 画像サイズ800x600
set terminal pngcairo enhanced font "Times New Roman,18" size 800,600
# 補助線つける
set grid
# csvは,で区切るので指定。
# 指定しないとdat形式(空白で区切るやつ)と勘違いしてエラー起こす
set datafile separator ","
set xlabel "X-axis" # x軸名
set ylabel "Y-axis" # y軸名
set title "Title" # タイトル
# ファイル名を指定すると凡例にファイル名が表示されて厄介なので削除する
unset key
# 出力ファイル名。
# ここでepsやjpgにしても無視される
# 変えたいなら上にある terminal pngcairo の文章を弄ること
set output "output.png"
# 入力ファイル指定しプロット。
#一行目が各列の説明の場合skipで飛ばせる。2行3行となるなら1ではなく2や3にしよう。
# usingでどの列を使用するのか指定する。
# システムの都合で行末に,があった場合エラー起こすのであえてusing 1:2を入れている。
# 複数列ある場合は using 1:5 とかやれば指定できる。
# with line で線描画。ないと点描画する。データの並び順で線を繋ぐ
# linecolor 0 は黒色。ほかの色は本記事後述。
plot "input.csv" skip 1 using 1:2 with line linecolor 0
対数表記、データの加工、ラベルの数式表記
# 両対数表記。片対数にしたい場合はlogscale xあるいはlogscale y
set logscale
# データの加工。
# それぞれの列の値を変更したいときに。
plot "input.csv" skip 1 using ($1-25):($2*1e6)
# ラベルにギリシャ文字や数式を使いたいとき
set xlabel "{/Symbol w}_c^2"
# 添え字が離れたくない場合
set xlabel "{/Symbol w}@_c^2"
線の太さ、形式、色を変えたい
次のページに詳しく記載されている
https://atatat.hatenablog.com/entry/2020/07/26/090000
gnuplotを導入するには
windowsユーザー
ソースフォージで公開されている
参考: gnuplot公式ページ
Ubuntu等
sudo apt install gnuplot
でOK
メリット
- win,mac,linuxなどなど対応の幅が広い
- オープンソース
- 数式表記対応
- 軽い、速い
- excelからの脱却
- eps方式も対応。latexユーザーもニッコリ
デメリット
- ドキュメントが少ない
- vscode等エディタでシンタックス対応してない(文字に色がつかないのでわかりにくい)
- 記法が何通りかあって記事ごとに違うものが紹介されていて混乱する
- 記事によってはlinuxじゃないとできないような手法も紹介されていてつらい
さいごに
gnuplotは数式を出力させたり、線を複数本書き込めたり、なんならフィッティングまで対応していていろいろできるいいやつなんですがいかんせん書き方を忘れる......