HoloViews.orgにて学んだ内容をまとめていきます。
HoloViewsとはオープンソースpythonライブラリーで
データ分析、ビジュアライゼーションを簡単に素早く行う事が可能
Contents
HoloViewsサンプル
HoloViews.orgに掲載されているサンプル
コードは驚くほどシンプルな構造
更にGalleryページにはBoken,Matplotlib,Plotlyを使用した
サンプルグラフがある
各グラフのコードのサンプルもHoloViews.orgにて紹介している
Holoviewのインストール
condaがお勧め
1 |
conda install -c ioam holoviews bokeh |
上記で紹介したサンプルのグラフも含まれている
1 2 |
holoviews --install-examples cd holoviews-examples |
NY地下鉄の駅名情報を可視化
pandas,numpyを使用する
hv.extension(“bokeh”)でBokehのエクステンションをロードし
Bokehを使った可視化ができるようになる
他のプロットライブラリーも組み合わせ可能(matplotlib等)
1 2 3 4 |
import pandas as pd import numpy as np import holoviews as hv hv.extension('bokeh') |
次にニューヨークの地下鉄の駅名やその他情報を
含むデータセットを読み込む
csvファイルはこちら
1 2 |
station_info = pd.read_csv('/station_info.csv') station_info.head() |
可視化の為のオブジェクト
スキャッタープロット
hv.Scatterオブジェクトを使用して
駅の数と利用者数(百万単位)の2つをスキャッタープロット表示
1 2 |
scatter = hv.Scatter(station_info, 'services', 'ridership') scatter |
※画像のリンク先でグラフをドラッグで動かせる
csvのデータ(station_info)をhv.Scatterに渡し、scatterオブジェクトを作成
これ以外のエレメントはReference Galleryにて紹介
ヒストグラム
hv.Histogramオブジェクトを使用して地下鉄の駅開設日を
ヒストグラムにする
1 2 |
layout = hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened']) layout |
+を使用して複数のグラフ表示
スキャッタープロットとヒストグラムなど複数のオブジェクトを
使用したグラフを横並びに表示する
1 2 |
layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened']) layout |
以下ここまでのコードまとめ
1 2 3 4 5 6 7 8 9 10 |
import pandas as pd import numpy as np import holoviews as hv hv.extension('bokeh') station_info = pd.read_csv('holoviews-master/examples/assets/station_info.csv') scatter = hv.Scatter(station_info, 'services', 'ridership') layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened']) layout |
神経スパイク列を可視化
脳のニューロン発火現象を記録したデータセットを用いて
発火時間(milliseconds)
神経細胞が発火する頻度をヘルツ(Hertz)
の2つのデータセットを可視化
csvファイル(spike_train.csv.gz)はこちら
pandasとholoviewsをインポートし、spike_trainにcsvを読み込ませる
1 2 3 |
import pandas as pd import holoviews as hv spike_train = pd.read_csv('/spike_train.csv.gz') |
データフレームを表示
1 |
spike_train |
hv.Curveでグラフ作成
可視化のオブジェクトにhv.Curveを使用
先ほど使用したhv.Scatter やhv.Histogramの仲間
hv.Curveの引数を左からcsv格納変数、インデックス名2つ、group=でグラフタイトル
1 |
curve = hv.Curve(spike_train, 'milliseconds', 'Hertz', group='Firing Rate') |
bokehとmatplotlibをロード
1 2 |
hv.extension('bokeh', 'matplotlib') curve |
hv.Spikesでグラフ作成
1 2 |
spikes = hv.Spikes(spike_train.sample(300), kdims='milliseconds', vdims=[], group='Spike Train') spikes |
2つのグラフを並べる
1 |
curve + spikes |
更にカスタマイズして見やすいグラフ作成
グラフ上にカーソルを合わせると各データをインタラクティブに表示
1 2 3 4 5 6 7 8 9 10 11 |
%%output size=150 %%opts Curve [height=100 width=600 xaxis=None tools=['hover']] %%opts Curve (color='red' line_width=1.5) %%opts Spikes [height=100 width=600 yaxis=None] (color='grey' line_width=0.25) curve = hv.Curve( spike_train, 'milliseconds', 'Hertz') spikes = hv.Spikes(spike_train, 'milliseconds', []) (curve + spikes).cols(1) |
%%output size=150で全体のサイズ
%%opts Curve でcurveグラフ個別の詳細設定
以下のグラフは画像ですのでインタラクティブ操作できません
実際に動かすにはこちらのグラフをご覧ください。
コメントを残す