Daru::View でグラフを表示してみた

# グラフを描くツール Daru::View

　Rubyでグラフを表示する[Daru::View](https://github.com/SciRuby/daru-view)というツールを使ってみた。Daru::Viewは2017年に始まった比較的新しいプロジェクト。[Google Charts](https://developers.google.com/chart/)や[Highcharts](https://www.highcharts.com/)を使用している。

# インストール
2019年1月26日時点では、Daru, Daru::Viewともに、gemパッケージではなく、githubリポジトリから最新版をインストールする。少なくとも私の環境では、安定版のdaruでは正常に動作しない。ここでは[specific_install](https://github.com/rdp/specific_install)を利用して、GitHubのリポジトリからインストールした。 

```bash
gem install specific_install
gem install https://github.com/SciRuby/daru
gem install https://github.com/SciRuby/daru-view
```

そのまえにJupyter + IRuby環境がインストールされている必要がある。これは少々面倒だが、[IRuby インストールガイド](https://github.com/RubyData/workshop-materials/blob/master/iruby_guides/installation_guide.md)に詳しい方法が解説されている。

# 使ってみる

`jupyter lab` もしくは `jupyter notebook` とタイプしてJupyterを起動。

#### グラフを描くのに使用するライブラリ
* Google Charts
* Highcharts
* Nyaplot

ただしNyaplotはすでに開発が終了していると思われるので、新しく使い始めるのはすすめられない。


## 折れ線グラフ
1821–1934年のカナダの山猫の年間捕獲数のデータセットLynxを折れ線グラフで描出してみる。まずは山猫のデータセットを読み込んでDaru::DataFrameオブジェクトを作る。

```ruby
require 'daru/view'
require 'rdatasets' # gem install rdatasets
lynx = Daru::DataFrame.from_rdatasets :datasets, :lynx
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/144608/dfb23bc5-e9de-ef65-9d81-9e5ce458382b.png)

googlechartsを指定する。ほかに highchart などが指定できる。

```ruby
# Google Charts を指定する
Daru::View.plotting_library = :googlecharts
```

グラフを描く。オプション無しで折れ線グラフになる。

```ruby
chart = Daru::View::Plot.new(lynx)
chart.show_in_iruby
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/144608/cb0a296d-07a4-9140-5ab5-3d7cf367f99a.png)

`show_in_iruby` はつけず、IRuby側で判定するべきだと思うが、そうしない理由がなにかあるのかもしれない。

## 面グラフ
オプション type: :area を指定。

```ruby
chart = Daru::View::Plot.new(lynx, type: :area)
chart.show_in_iruby
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/144608/9deecd60-e206-db08-8502-e3f612eafe9f.png)

## 棒グラフ
オプション type: :bar を指定。

```ruby
chart = Daru::View::Plot.new(lynx, type: :bar, height: 600)
chart.show_in_iruby
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/144608/d0a59cce-d55a-5fd3-150b-275f83ed2648.png)

## グラフの色を変更する

```ruby
chart = Daru::View::Plot.new(lynx, type: :bar, height: 600, colors: ["Green"])
chart.show_in_iruby
```
colors: ["Green"] などとすると変更される。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/144608/12b5a5bc-f784-5ebc-66a6-75364c8b7337.png)

## タイトルや軸を入れる

```ruby
chart = Daru::View::Plot.new(lynx,
    type: :area,
    title: "カナダの山猫の年間捕獲数",
    hAxis: {title: "年"},
    vAxis: {title: "頭数"},
    colors: ["Orange"],
    height: 360,
    )
chart.show_in_iruby
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/144608/d1e6ef83-1df5-ccfe-4e9d-222169aea283.png)

## バブルチャート

```ruby
usarrests = RDatasets.load :datasets, :USArrests
chart = Daru::View::Plot.new(usarrests,
    type: :bubble,
    width: 700,
    height: 700,
    colors: ['yellow', 'red']
    )
chart.show_in_iruby
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/144608/cfeadbd2-bad7-1254-40a0-51ff97fa3a13.png)

## 散布図
```ruby
cars = RDatasets.load :datasets, :cars
chart = Daru::View::Plot.new(cars,
    type: :scatter,
    width: 600,
    height: 600
    )
chart.show_in_iruby
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/144608/e624ade1-6201-bfc0-b206-b905b12e5d25.png)

（続く）