7
8

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 5 years have passed since last update.

Mac で Julia #12 グラフを描く

Last updated at Posted at 2018-09-03

前回に引き続きJuliaについてです。

ドキュメントに沿って試していきます。

今回はグラフを描画してみたいと思います。

グラフを描く

コマンドラインからグラフを描く

コマンドラインからグラフを描いてみたいと思いますが、コンソールでどうやって描けるんだろ?

PlotsとGRというパッケージを使います。

sh-3.2$ julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.0.0 (2018-08-08)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> import Pkg

julia> Pkg.add("Plots")
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
 Resolving package versions...
  Updating `~/.julia/environments/v1.0/Project.toml`
 [no changes]
  Updating `~/.julia/environments/v1.0/Manifest.toml`
 [no changes]

julia> Pkg.add("GR")
 Resolving package versions...
  Updating `~/.julia/environments/v1.0/Project.toml`
 [no changes]
  Updating `~/.julia/environments/v1.0/Manifest.toml`
 [no changes]

julia> using Plots

julia> Plots.gr()
Plots.GRBackend()

julia> f(x)=sin(x)
f (generic function with 1 method)

julia> plot(f)

julia>

なんか画像がでました!GKSTermっていつのまにインストールされてたのか...

gksterm.png

調べたところ~/.julia/packages/GR/fnyt8/deps/gr/Applications/GKSTerm.appとしてインストールされてました。

Jupyter notebookでグラフを描く

おなじコマンドでうまくいました。

まず、Jupyter notebookを動かします。

julia> Pkg.add("IJulia")
 Resolving package versions...
  Updating `~/.julia/environments/v1.0/Project.toml`
 [no changes]
  Updating `~/.julia/environments/v1.0/Manifest.toml`
 [no changes]

julia> using IJulia

julia> IJulia.notebook()

コマンドラインのと同じコマンドをまとめて実行します。

notebook.png

こちらもうまく描画できました。

パッケージについて

PlotsとGRというパッケージはどういうのでしょう?

Plotsパッケージ

Plots

Tutorialはこちらです。

具体的にグラフを描くというパッケージなんですかね。

サンプルはこんな感じ

julia> using Plots

julia> x = 1:10; y = rand(10);

julia> plot(x,y)

gksterm1.png

yを配列にすると2本のグラフも描けます。他にもプロパティを追加したサンプルです。

julia> x = 1:10; y = rand(10,2);

julia> plot(x,y,title="Two Lines",label=["Line 1" "Line 2"],lw=3)

gksterm2.png

既存の画像にプロパティを追加してみます。

julia> xlabel!("My x label日本語")

gksterm3.png

X軸にラベルがでました、ただデフォルトだと日本語フォントではないらしく文字化けしました。

画像を保存

julia> savefig("myplot.png")

GKSTermの画面が消えて画像が保存されました。

myplot.png

なぜかフォントが違いますね。

Lorenz Attractor

docs.juliaplots.orgではもっとすごいグラフのサンプルがあります。

# define the Lorenz attractor
mutable struct Lorenz
    dt; σ; ρ; β; x; y; z
end

function step!(l::Lorenz)
    dx = l.σ*(l.y - l.x)       ; l.x += l.dt * dx
    dy = l.x*(l.ρ - l.z) - l.y ; l.y += l.dt * dy
    dz = l.x*l.y - l.β*l.z     ; l.z += l.dt * dz
end

attractor = Lorenz((dt = 0.02, σ = 10., ρ = 28., β = 8//3, x = 1., y = 1., z = 1.)...)


# initialize a 3D plot with 1 empty series
plt = plot3d(1, xlim=(-25,25), ylim=(-25,25), zlim=(0,50),
                title = "Lorenz Attractor", marker = 2)

# build an animated gif by pushing new points to the plot, saving every 10th frame
@gif for i=1:1500
    step!(attractor)
    push!(plt, attractor.x, attractor.y, attractor.z)
end every 10

tmp.gif

なんだかすごいです。

GRパッケージ

Plotsのバックエンドとして実際の画像を生成するようです。可視化ライブラリっていうんですかね。

大元はここGR Frameworkなのかな?

Julia Package GRもドキュメント化されてます。

julia> Pkg.add("GR")
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
 Resolving package versions...
  Updating `~/.julia/environments/v1.0/Project.toml`
 [no changes]
  Updating `~/.julia/environments/v1.0/Manifest.toml`
 [no changes]

julia> using GR

julia> histogram(randn(10000))

gksterm4.png

今日はこの辺で。

7
8
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
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?