Julia: グラフの描画

Takami Torao Julia 0.6 #julialang
  • このエントリーをはてなブックマークに追加

Gadfly ライブラリ

Gadfly.jl は ggplot2 をベースに Julia で実装されているプロットと可視化のライブラリ。REPL からマウス操作可能な HTML + SVG を出力しブラウザを起動したり、PNG 等の画像ファイルへ保存することができる。

Pkg.add("Gadfly")
# 以下は PNG 出力時に必要 (エラーメッセージ参照)
Pkg.add("Cairo")
Pkg.add("Fontconfig")
Pkg.build("Cairo")

Iris をプロットした PNG 画像は以下のように作成することができる。

using Gadfly
using RDatasets

iris = dataset("datasets", "iris")
p = plot(iris, x=:SepalLength, y=:SepalWidth, Geom.point)
img = PNG("iris_plot.png", 15cm, 10cm)
draw(img, p)

REPL の Gadfly はプロット画像の作成のみで表示には実行環境のブラウザを使用するため Windows 環境でも容易に使用することができる。REPL から出力した画像は ; + pwd で表示されるディレクトリに保存されている。

PyPlot ライブラリ

PyPlot はプロットライブラリである matplotlib.python のインターフェースを Julia から使えるようにしたパッケージ。ローカルに導入する場合は REPL で PyPlot パッケージを導入しておく。

julia> Pkg.add("PyPlot")

公式サイトから参照できるテスト実行サイトなら最初から導入されているので便利。

ヒストグラム

テキストファイルに保存されている1行1値の 1 次元データを読み出してそのヒストグラムを表示する。

using PyPlot

function load(file_name::String)
  scores = []
  file = open(file_name, "r")
  while ! eof(file)
      num = readline(file)
      push!(scores, parse(Float64, num))
  end
  close(file)
  return scores
end

x = load("data.txt")
nbins = 100

PyPlot.plt[:hist](x, nbins)
ax = gca()
ax[:set_ylim]([0, 60])
ax[:set_xlabel]("X Label")
ax[:set_ylabel]("Y Label")

data.txt の内容:

48123.88
38990.22
35904.29
32270.66
32198.84
...