Julia: 授業の参加状況をグラフに, gadfly

I.何をする

 

久しぶりのJulia+Juno+Atomです。授業データを用いて簡単なグラフを作成します。

なぜ、Juliaかというと、ちゃんとした理由はつけられるかもしれませんが、私にとっては、JuliaとJunoという名前だけでもマスターしたくなる言語です。それに、まわいにやっている人が皆無ですし。それも動機です。

Julia+Junoを普通に使えるようなりたいと思っています。

PythoやRは、ネット上にやまほど情報があるので、独学できます。

Juliaも情報はありますが、両者に比べると、初心者向けの解説は少ないので、PythonかRを少し勉強してから始めるか、あるいは並行して勉強するのがよいと思います。

 

II.事前準備とライブラリインストール

 

以前に、JuliとJunoについて紹介しました。Juliaは、エディタのAtuomにインストールします。

 

Julia: はじめてのプログラムは機械学習!

 

III.グラフの作成

 

Junoのインターフェースです。

 

1.スクリプトと解説

 

私の環境(iMac)では、plot()ではグラフは表示できませんが、hstack() で表示できます。グラフの拡大、縮小もグラフのペインで可能です、、、以前のバージョンではできませんでした。

URLからCSVデータをとる式は少し面倒でが問題なく取得できます。

color=で色を分けますが、グラフの右にカラーキーが表示されます。不要なのでTheme(key_position = :none で削除します。

Juliaをカッコよくダークなテーマにしていると、グラフは見づらいです。テーマを変えてもよいですが、今回はSVGで書き足しました。Inkscapeで自由に描きかえられるので便利です。

.

# ライブラリのインポート
using Gadfly, DataFrames, CSV
using uCSV, HTTP # reading data from URLs
# グラフのサイズを指定
set_default_plot_size(31cm, 12cm)
# URLでデータを読み込む
html = "https://pastebin.com/raw/CrzxeiXB";
df = DataFrame(uCSV.read(IOBuffer(HTTP.get(html).body), quotes='"', header=1))
# ファイルから読む場合
# df = readtable("ファルのパス")
# 棒グラフの作成
p1 = plot(df, color=:class, y=:registered, x=:class, Geom.bar, Theme(key_position = :none), Guide.title("Registered"))
p2 = plot(df, color=:class, y=:accessed, x=:class, Geom.bar, Theme(key_position = :none), Guide.title("Accessed (%)"))
p3 = plot(df, color=:class, y=:computer, x=:class, Geom.bar, Theme(key_position = :none), Guide.title("Computer (%)"))
p4 = plot(df, color=:class, y=:submitted, x=:class, Geom.bar, Theme(key_position = :none), Guide.title("Submitted (%)"))
hstack(p1, p2, p3, p4)
# グラフの保存
img = SVG("registered.svg", 14cm, 8cm)
draw(img, p1)
img = SVG("accessed.svg", 14cm, 8cm)
draw(img, p2)
img = SVG("computer.svg", 14cm, 8cm)
draw(img, p1)
img = SVG("submitted.svg", 14cm, 8cm)
draw(img, p1)
 

 

2.作成されたSVG画像

 

SVGなので拡大しても劣化しません。また、Inkscapeで簡単に修正できます。

 

 

 

 

 

About shibatau

I was born and grown up in Kyoto. I studied western philosophy at the University and specialized in analytic philosophy, especially Ludwig Wittgenstein at the postgraduate school. I'm interested in new technology, especially machine learning and have been learning R language for two years and began to learn Python last summer. Listening toParamore, Sia, Amazarashi and MIyuki Nakajima. Favorite movies I've recently seen: "FREEHELD". Favorite actors and actresses: Anthony Hopkins, Denzel Washington, Ellen Page, Meryl Streep, Mia Wasikowska and Robert DeNiro. Favorite books: Fyodor Mikhailovich Dostoyevsky, "The Karamazov Brothers", Shinran, "Lamentations of Divergences". Favorite phrase: Salvation by Faith. Twitter: @shibatau

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.