ノートの切れ端

その日やったことを書くだけ。

Julialangのプロットライブラリの紹介

序文

Rの演算表現だったり行列表現が合わないということでJulialangを好んで使うようになって久しいですが, 最近になってようやく腰を落ちつけてプログラミングできるようになった気がします.というのも主な原因は デフォルトのプロットライブラリがなく,あれこれ試行錯誤していたことかと思います.自分なりにオススメのライブラリと その特徴をまとめます.以降,主観が強いことを留意ください.

PlotlyJSとPGFPlotsXの紹介と使いどころ

個人的には PlotlyJSとPGFPlotsX を用途によって使い分けることをオススメします.

PlotlyJS.jl

インタラクティブで美しい描画を生成してくれるライブラリです.Julialang向けのドキュメントは充実しているとは言えませんが, オプションを指定するためのデータ構造を把握してしまえば,他言語のドキュメントで事足りると思います.以下,特徴をいくつか挙げます. 実験的に手元で描画して考察したい時に有用なプロットライブラリ かと思います.

インタラクティブなプロットが可能

いわゆるグリグリ操作できるプロットを生成してくれます.特に3次元データを可視化する際は非常に有用です.

htmlへグラフの書き出しが可能

グリグリ操作できるプロットを,htmlファイルとして書き出せます.他の人へ描画結果を渡したい場合に便利かもしれません.

描画のためのオプションの設定方法が私好み

完全に主観な意見ですが,上記の通りです.描画時の線の太さや点の大きさ,色の設定などをオプションと呼びますが,これらを 設定するためのデータ構造が私好みです.Example集を挙げる際には一緒にまとめようと思います.

無料版の場合,ファイルへの出力結果に難あり(確認不足)

調査不足かもしれませんが,pdfファイルなどとしてファイルへ出力した際,綺麗な描画が得られませんでした.有料版のほうは 試していないのでよくわかりません.

LaTeX表記に難あり

数式フォントを使って描画したい場合の自由度は低いです.例えば数式フォントにTimesフォントを使いたい場合,LaTeXでは \usepackage{mathptmx}を使うかもしれませんが, そのような変更をPlotlyJSで行う方法を私は把握していません.また,無料版においてLaTeX表記による数式をそのままファイルへ出力することも,私の調べた限りできません.

PGFPlotsX.jl

LaTeXのPGFPlotsを使う,描画の品質の高さが信頼できるライブラリです.もととするPGFPlotsと同じように記述できることが特徴の1つです. グラフをグリグリ操作することはできないので, 最終的な出力物としてグラフを生成する時に有用なプロットライブラリ としてオススメです.

記述方法がPGFPlotsとほとんど同じ

記述方法がほとんど同じであるため,「pgfplots manual」で出てくる,500ページ越えの公式マニュアルがそのまま手引書となります. できないことなんてないんじゃないかと思えます.

LaTeXパッケージの使用も可能

数式フォントにTimesフォントを使用したい時の\usepackage{mathptmx}や,太字にしたい場合の\usepackage{bm}などを利用することができます. 詳細はPGFPlotsX.jlの公式ドキュメントに記述されています.そのうち挙げるExample集にもまとめようと思います.

まとめ

今回は個人的にオススメのJulialangプロットライブラリとして, PlotlyJSPGFPlotsX を挙げました.前者は考察のための実験的な 可視化ツールとして最適で,後者は論文などへ載せる場合の最終的な成果物を描画するツールとして適しているかと思います.それぞれのExample集はメモとしてそのうちまとめます.

付録.その他のライブラリについて

今回挙げたライブラリ以外の有名どころは多数ありますが,個人的に合いませんでした.簡単に,どこが合わなかったかを挙げておきます.

PyPlot.jl
単純にmatplotlibを使ったことがなかったため,記法に慣れませんでした.matplotlibを使い慣れている人は相性が良いかもしれません.
Gadfly.jl
非常に綺麗な描画をしてくれますが,私が使ってた時は3次元プロットができなく断念しました.
PGFPlots.jl
PGFPlotsX.jlと同様,LaTeXのPGFPlotsを使って描画するライブラリです.PGFPlotsX.jlの記法の方が相性が良かったため私はそちらを好みます.