Bokehを使ったグラフ描画
今までPythonでのグラフ描画といえばmatplotlibやSeabornがメジャーでしたが、ここにきてBokehというライブラリが完成度を上げてきました。
matplotlibが最終的に静的なイメージファイルを吐き出すのと違い、Bokehはhtmlファイルを書き出します。
縮小・拡大・移動のようなユーザー操作を簡単に付加出来るので、Webで公開するような用途でも使えるでしょう。
例として、以下の様なテーブルの可視化を考えてみます。
なお、AnacondaをインストールするとBokehも入ってきますが、バージョン0.11では「外れ値があるとヒストグラムが壊れる」という割と重大なバグがあったりするので注意しましょう。conda update bokeh
で0.12に更新するのがオススメです。
dpc点数 | 科番号 | 科名 |
---|---|---|
1919.756733 | 3 | 整形 |
2037.609047 | 3 | 整形 |
2033.869387 | 3 | 整形 |
1940.643659 | 1 | 内科 |
2018.686431 | 2 | 外科 |
import pandas as pd import datetime import numpy as np from bokeh.charts import Histogram, output_file, show from bokeh.layouts import row #サンプルデータを作成 dpc = np.random.normal(2000,100,5000) ka = np.random.randint(1,4,5000) kadict = {1:'内科',2:'外科',3:'整形'} df = pd.DataFrame({'dpc点数':dpc,'科番号':ka}) df['科名'] = [kadict[x] for x in df['科番号']] #グラフをプロット hist = Histogram(df, values='dpc点数', title="dpc点数", plot_width=400,bins = 20) hist2 = Histogram(df, values='dpc点数', label='科名', color='科名', legend='top_right', title="DPC点数科別", plot_width=400,bins = 20) output_file('hist_test.html') show(row(hist, hist2))
結果はhmtlファイルとして書きだされます。
はてなブログでhtmlを置く方法がわからなかったので画像を貼り付けましたが、実際には拡大したり移動したりが出来ます。 記法もシンプルですので、ぜひ活用してみてください。