Chikuwaのつぶやき

クラシック音楽、言語、ドイツ、物理など、雑食性です

macOSでのgnuplot環境構築&初めの一歩

新しいmacに変わった時、ササっとgnuplotをインストールし関数やデータをプロットできる環境を整えるためのメモ。macOS 10.15.5 Catalinaで動作。

手順はいたって簡単

  • Homebrewをインストール。公式サイトの初めに書いてあるコマンドをそのままTerminalへコピペ。実行すればインストールできる。
  • Homebrewを使ってgnuplotをダウンロード&インストール。Terminalで以下を実行する。

brew install gnuplot

  • 5年前はAquaTermとかを別途インストールしていたけど、現在は(もしかして当時も?)不要。
  • $ gnuplotgnuplotを起動すると、描画ソフトとして'qt'が設定されていることが分かる。前はaquaだった。f:id:Chikuwa04:20200606001438p:plain

qtはまあまあ便利で、画像を表示しているウィンドウの左上のアイコンをクリックするとコピー、印刷、PDFや画像イメージに変換ができる。gnuplotはqt以外にも色々な形式での出力に対応していて、

set term

でどの画像形式で出力可能か確認できる。欲しい形式がない場合は、gnuplotをオプション付けてインストールする

brew uninstall gnuplot
brew install [option] gnuplot

各オプションは

brew info gnuplot

で確認できる。たまには

brew cleanup

を実行して不要なファイルを掃除するとよいらしい。

プロット方法

まずgnuplotコマンドを書き並べたテキストファイルを作成する。拡張子は.dat, .txt, .pltいずれもOK。
最初にデフォルト設定になっているか念押ししておくとよい。terminalをqtに設定しておくと、実行時スクリーン上にプロットが表示される。

reset
set term qt enhanced font 'Helvetica,22'

この段階でフォントまで指定しておけば、plotとかset xlabelとかの行でいちいち書かなくて済む。enhancedはギリシャ文字*1、太字、斜体などを出力する際に必要。特定の文字のサイズを特別大きくしたければ、あとでset xlabel '~' font ',24'などとする。プロットのコマンドは、解析的な関数がわかっている場合、シンプルに

f(x)=関数の定義
p f(x)

関数の変化が激しいのでプロット点の数(解像度)を増やしたい、という場合には

set samples 1000   # default: 100

を設定してからplot。2変数関数の3Dプロットなら

f(x,y)=関数の定義
sp f(x,y)

既にある.datファイルから値を読んでプロットしたければ

p 'filename.dat'

テキストファイルが完成したら、Terminalでgnuplotを起動し、そのファイルを呼んで実行する。current directoryにこのファイルが無い場合は、パスを指定するかcdでそのディレクトリまで移動する。以下の2つのうちいずれかを実行する。

load ‘filename.plt’
call 'filename.plt'

普段gnuplotで開き描画するには、基本loadコマンドで事足りる。オプションでパラメータを渡したい時はcallコマンドを使う。詳しくは
command-line — コマンドライン引数をgnuplotに渡す方法は?

GnuplotコマンドもVScodeで書きたい

普段LaTeXVScodeで書いているので、せっかくならgnuplotの.pltファイルもそこで編集したい。syntax highlightingもしてくれるし。以下のextensionをインストールした↓
f:id:Chikuwa04:20200606005726p:plain
インストール後は特に設定変更なしに利用できた。eps形式でプロット内容を出力する方法を使うと、こんなにお手軽。

  1. VScodeTeXのpdfを見ながら、「この図こうしたいな」と思ったところで
  2. ささっと.pltファイルを書き換える
  3. Terminalでgnuplot実行
  4. .epsファイルがアップデートされる
  5. .texファイルも自動でコンパイルされるのでpdf上の図も更新される

これは便利。もしかしたらgnuplot実行もTerminalではなくVScodeからワンクリックでできるように設定できるかも。

f:id:Chikuwa04:20200606010806p:plain
gnuplotの.pltとLaTeXの.texを共にVScode内で編集する

*1:ギリシャ文字を打つためのsyntaxは{/Symbol }。数式など斜体にするには{/Symbol:Italic }。f:id:Chikuwa04:20200606004914p:plain