2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

理学部の学生がgnuplotの備忘録を書く2

Last updated at Posted at 2020-07-12

理学部の学生がgnuplotの備忘録を書く
にまさかの続編が出ました。

gnuplotのコンソール使いにくすぎない?

WindowsでもWindows Terminalとかそういう快適なCUI環境が整いつつある今、gnuplotのコンソールはあまりにも使いにくすぎる。

カーソルの動きが怪しいし、日本語の表示も怪しい。キーボードショートカットも気に食わない。

スクリプトファイルにしよう

そもそもgnuplotでグラフを作るまでのコマンド群は大体がお決まりのもので使い回すのだから、スクリプトファイルにするのに向いている。

UTF-8で書くには

まずスクリプトファイルのエンコードはUTF-8にしたい。いい加減Shift-JISからはお別れしたいし。

そのためにはスクリプトファイルの冒頭で

set encoding utf8

としておく。Windows環境では必須となる。

ターミナルとフォントの選択

UTF-8にしたからには絵文字とかも使えるナウでヤングな環境がほしい。

スクリプトファイルを呼び出す前に

set terminal windows 0 color solid butt enhanced font "HackGen" 

とした。フォントにはHackGenを採用した。

適当にプロットしたときに開くプロット画面のOptionsDirect2D backendを選ぶ。GDIなんていうカビの生えた方法は捨て去るべきだし、そもそも原理的に絵文字に対応できない。残念なお知らせとしては、このbackend選択はどうもwgnuplot.iniに反映されないらしく、wgnuplot.exe起動ごとに設定し直す必要がある。gnuplot 5.4とかそのへんでは治っていることを期待したい。

image.png

下にGDI+ backendを選んだ時の様子を示す。絵文字に対応できていない。
image.png

下にDirect2D backendを選んだ時の様子を示す。モノクロながら絵文字に対応できている。将来のgnuplotでカラーも対応していることを期待したい。

image.png

ただし古いgnuplot(手元にgnuplot 5.1 patch 0があった)ではそのオプションがない。

image.png

うっかりwxtをバックエンドに使って絵文字を表示させようものなら盛大にバグる。つまりwxtはもはや死んだ。

image.png

現在Windows環境で動くgnuplotのバイナリを手に入れる方法

新規に入手するかと思ってダウンロードサイトに行くと
http://tmacchant3.starfree.jp/gnuplot/Eng/winbin/
リンク切れで落とせない。これではどうもならない。

msys2で

$ pacman -S mingw-w64-x86_64-gnuplot

するのがよい。ただしmsys2のbash上からwgnuplotを呼び出すと端末が中途半端にUTF-8に毒されて、日本語パスへの移動すらままならなくなるので、/mingw64/binのパスをエクスプローラーで開いてダブルクリックで起動するべきである。

また、上下キーで過去のコマンドをたどる機能はどういうわけか動かないので毎回コピペすることで対応する必要がある。

あとwxtを使おうとするとコケる

image.png

というわけでスクリプトファイルを書いてみた

gnuplot_cmd_list.plt
set encoding utf8
set xlabel "位置 [mm]"
set ylabel "波長 [nm]"
set xrange [0:200]
set yrange [0:1000]
# λ=xd/√(l^2+x^2 )
f(x)=(x/(1000*sqrt(215*215+x*x)))*1000000
g(x)=a*x+b
fit g(x) 'lambda-x_plot.txt' via a, b
plot f(x) lt 1 lc rgb '#000000' title "lambda"
replot g(x) lt 1 dt(10, 5) lc rgb '#000000' title sprintf("%fx+%f", a, b)
replot 'lambda-x_plot.txt' lt 1 lc rgb '#111111' pt 6

$$ \lambda = \frac {xd}{\sqrt{l^2 + x^2}} $$

のようなやや複雑な式でもf(x)=(x/(1000*sqrt(215*215+x*x)))*1000000のように(単位変換が入っていることに注意、$l=215, d=1.0 \times 10^{-3}$は既知のパラメータ)して扱える。

plotするデータも用意する

lambda-x_plot.txt
104	435.8
121 491.6
140	546.1
152	578
157	589

このファイルが有る場所に移動する
image.png

そしたら

load 'gnuplot_cmd_list.plt'

これでプロットできる。

image.png

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?