python data-visualization package status
TRANSCRIPT
Python可視化パッケージの現状 奥田 幸男(フリー)
skiyuki da@twitter
「楽しくComputing, Discuss」
nData Model
l原因の推定l MLが有効か?
nデータ可視化l PyPi分析l Cytoscape
: :
nHWいじりl 自作PC6台
l 次:CUDAor Edison?
PyDataTokyo#6-LT2015/10/23 ·
··
·
略歴
2
n40年間プログラミング@AV機器メーカーl70年代:社内SE
â IBM-360 Fortran, PL/I, RPG
l80年代:LSI設計CAD開発â DEC-VAX, Daisy Bliss, C X11, GKS
l95年~:半導体データ分析â Sun, PC C++, Octave, Tcl
t分析法:”Feature Engineering” +物理モデル
t可視化:CERN-Root, Gnuplot, PSTricks(TEX), LATEX
l2013~:オープン・データâ自宅Xeon Python, JavaScript
Pandas, Scikit-learn, Matplotlib, D3.js+ Flask
·
··
·
はじめに
PyDataTokyo#6-LT
データ分析vs可視化
3
n Python可視化パッケージの現状と将来Scikit-learn, StatModels ..
Pandas
SciPy
Numpy
400パッケージGraphviz
Ggplot
WebSeaborn
サービスMatplotlib
Bokhe
(PyQt, PyGTK ..)
???
·
··
·
はじめに
PyDataTokyo#6-LT
何をどう評価する
4
n “Index of Packages”@PyPi-HP á スクレーピングl検索: ”plot” or ”visualization”
実用性
名 重要度 解説—— —
UP日付
月間ダウンロード数
術語ネット分析
+by Cytoscape
対象パッケージ 汎用性
評価ポイント 技術動向·
··
·
PyPi分析
PyDataTokyo#6-LT
ダウンロード分布
5
n重要度 ≥ 2 áダウンロード数の偏り (Log)
���
��������" ����
���
�������
0 10 100 103 104 105 106
����$#�!������
�
��
��
��
��
��
" ����
�����������
��$#�!��
+ by Matplotlib “バー・チャート”+ ”注釈”+ ”ヒストグラム”·
··
·
PyPi分析
PyDataTokyo#6-LT
実用パッケージ
6
nMatplotlibだんとつのダウンロード á何故?l 汎用 , グラフ : 評価対象 特殊用途 : 評価対象外
,- ��������� ��" ��"���1;: ���������� �%�!� �#�&1;: ���������� �!� �#�&1;: ���� �%��",-�+( ���������� �����!����'* ���������� ��""�!�2.93 ��������� ���"�%,-���� ���������� �%���,- ��������� �� ��"0;.8<56 ���������� !�$�!�� �
�
�����
������
������
������
������
4/>=.7)����������
+ by Matplotlib “テーブル”+ “バー・チャート”
·
··
·
PyPi分析
PyDataTokyo#6-LT
ネット分析概要
7
術語ネット
plotdevice-tensorlib
qt-graph-helpers
pyNmonAnalyzer
django-tota11y
collective.jqueryflot
tw2.jqplugins.jqplot
collective.googlevisualization
gviz_data_table
django-teagarden
django-gcharts
django-collectd-rest
django-google-charts
matplotlib_iterm2
matplotlib-venn
daynight2geojson
pandas_confusion
larVolumeToObj
call_seq_browser
pandas-highcharts
sphinxcontrib.nvd3
matplotlib-subsets
matplotlib
●エッジ幅、ノード高∝
ダウンロード数
66術語
12技術分類
技術分類ネット
C:Matplotlib
plotexplorer_gui
pandas_confusion
matplotlib_iterm2
call_seq_browser
C:グラフィックス
plotdevice-tensorlib
matplotlib-venn
GeoBasesPypy
collective.jqueryflot
django-teagarden
gviz_data_table
collective.googlevisualization
django-collectd-rest
matplotlib
daynight2geojson
sphinxcontrib.nvd3
django-google-charts
tw2.jqplugins.jqplot
django-gcharts
pandas-highcharts
ccsgp_get_started
eea.app.visualization
pyprof2calltree
graphistrytest
qt-graph-helpers
matplotlib-subsetsipython-cypher
pyNmonAnalyzer
Orange-Network
パッケージ
術語
技術分類
リンク+by Cytoscape
リンク・ネット
J:1
J:8
J:6
C:Matplotlib
J:0
J:5
J:2
J:4
C:グラフィックス
J:7
J:3
●エッジ幅、ノード高∝
リンク数パッケージ
リンク·
··
·
PyPi分析
PyDataTokyo#6-LT
調査状況
8
Python
他の技法その他
Matplotlib デモ切断 デモ切断 論文
NetworkX ー ↑ 3種類
Graphviz
Cytoscape 有 有 ー
Pandas ー ー マトリックス
Seaborn ー ー 統計プロット
MPLD3 デモ切断 ー ー
D3.js デモ切断 デモ切断 デモ: http://54.64.132.31/ □■⇒ デモ切断 1点
Bokeh 予定 予定 予定
·
··
·
同一データで表示の比較
PyDataTokyo#6-LT
Matplotlib
n Python可視化基本パッケージ:lスタート: IPythonパッチ, JPL, V0.1@2003
l OS: Linux, Windows, OSXl I/F:PS, EPS, PDF, SVG, PNG, JPEG, BMP, TIFF, py-
cairo, PyQt4, PyQt5,PySide, wxPython, PyGTK, Tor-nado
n多機能:古典的プロット+グラッフィックスAPI
nドキュメント貧弱l Rel 1.4.3=2656頁!?初心者向け+詳細API
l中、上級者向けガイドがない [1]
nデータ構造: f (x), f (x, y), f (x, y, z)
■V1.4.3(2015/02/17) ■モジュール構成■インタラクティブ ■matplotlibrc
·
··
·PyDataTokyo#6-LT
インタラクティブQt4
10
Pyplotモード PyQt4モード
create_draw (ax)fig.canvas.mpl_connect(
’pick_event’, on_pic)plt.show( )
from PyQt4 import QtGui, QtCoreapp = QtGui.QApplication(sys.argv)aw = Top( ); aw.show( ); app.exec( )
class Top(QtGui.QMainWindow):create_draw (ax)fig.canvas.mpl_connect(
’pick_event’, on_pic)
def create_draw (ax):: : :
def on_pic (event):: : :
デモ切断 デモ切断
·
··
·
Matplotlib
PyDataTokyo#6-LT
グラフ・データ
11
n NetworkXパッケージlグラフの作成/演算/入出力/レイアウト/表示
âレイアウト: 独自/graphviz â表示: Matplotlib
l3種類の表示方法 áインタラクティブ不可能
tお任せ方式 デモ切断
1 None = draw_spring( ), ...draw_graphviz( )
tレイアウトし、表示 デモ切断
node_pos = spring_ layout(G,制御パラメーター)
2 None = draw_networkx(G, pos=node_pos, ....)
3 mpl.Path = draw_networkx_nodes(G, pos=node_pos, ....)
●自分で描く(node_pos) áインタラクティブ可能 デモ切断
·
··
·
Matplotlib
PyDataTokyo#6-LT
スタイル(1/2)
12
n同一プログラムで異なる描画l matplotlibrcを複数用意
講演用 論文用
��� ������ ��� ��� ��� ������������������������
��� � ����
��������������
��� ��� ��� ��� ��� ��� ������
���
���
���
���
���
���
��� � ����
��������������
1.背景: 色 2.軸:色 3.軸:文字サイズ 4.軸:目盛方向5.用例:マーク数 6.用例:文字サイズ 7.用例:枠の有無8.図面:背景色 9.図面:マークサイズ 10.図面:文字サイズ
·
··
·
Matplotlib
PyDataTokyo#6-LT
Pandasn Matplotlib作図コマンドの延長
mpl. Axes. method(~X,~Y )⇒
DataFrame. plot ( kind=’method ’ )
n独自作図コマンドnスタイル変更強制無し
nデータ確認/デバッグ用
■V0.16.2(2015/06/13)
·
··
·PyDataTokyo#6-LT
作図例
14
1 df.plot(subplot=True) 2 df.plot(secondary_y=[..]
���������������������������
���������
������������������������
��
��
� �� ���
���
���
���������������
��
�� �����������
� � ��� �� ���
����
���
����
���
���
����� ������������� ����
! $#�"�����������������������
�
�
���
��
���
��
3 scatter_matrix(df) 4 Seaborn pairplot( )
���������������������
�������
����������������
�
���
������������������ ���
�������
������������
��
����
����
����
����
� ���
�
��
���
���
���
��
·
··
·
MatplotlibーPandas
PyDataTokyo#6-LT
SeabornnPandas DataFrameの可視化
l統計処理と可視化の統合nスタイルの拡張
lテーマ: 背景色、グリッド、カラー・マップ
n Matplotlibとの混在は注意n規定パラメータ以外での修正不可能
■V0.60(2015/06/29)■Panda組み込み可視化と比較
·
··
·PyDataTokyo#6-LT
Pandasの可視化
16
n1コマンドで、複数統計処理と可視化
���� ���� ���� ���� ���� ����
�� �
���
���
���
���
���
���
���
���
���
����������
� ��������������������� ���
df = pd.DataFrame({u’日付’: ds...})
jointplot(data=df, x=u’日付’,y=u’ダウンロード log’ )
1X散布図 +2X分布図
n私見:表示お任せlデータ確認/デバッグ用 ●VUpに期待
·
··
·
MatplotlibーSeaborn
PyDataTokyo#6-LT
Bokehnインタラクティブ可視化パッケージ
l Continuum社開発OSS
lウエブ・ブラウザーCanvas使用â D3.js SVG使用
n Bokeh(Python) + Bokehjs(JavaScript)
l Json経由での専用プロトコール
nどこまで、お任せに出来るか?n足りない、必要機能有り?
■V0.9.2(2015/07/23)
·
··
·PyDataTokyo#6-LT
D3.js
n可視化プログラミング・ツール・キットl D3: Data Driven Documents
lウエブ・ブラウザーでの可視化n JavaScriptライブラリ[2][3]
l標準の利用:HTML, DOM, SVG
l沢山のプログラミング便利機能
n面倒:高自由度、要詳細コーデングn公開/特殊形状/ダイナミック可視化
■V3.5.6(2015/08)
·
··
·PyDataTokyo#6-LT
要詳細コーデング
19
■ Matplotlib 1行plt.plot(x, y, m, c=d.c)
■自動生成:
X/Y軸,目盛パン/ズーム/出力
デモ切断
■ D3.js 11行var scale x = d3.scale.linear().domain([0, 1]).range([10, 240]);
var scale y = d3.scale.linear().domain([1, 0]).range([10, 140]);
svg.selectAll(”.dot”)
.data([DOT]).enter()
.append(”circle”)
.style(”stroke-width”, 2)
.attr(”r”, 13)
.attr(’cx’, function (d) return scale x(d.x);)
.attr(’cy’, function (d) return scale y(d.y);)
.attr(’stroke’, function (d) return d.color;)
.attr(’fill’, function (d) return d.color;);
■要追加コード:X/Y軸,目盛パン/ズーム
デモ切断
·
··
·
ブラウザーD3.js
PyDataTokyo#6-LT
デモ
20
デモ切断
n Force Layout[4]lダイナミック表示
t JSでシミュレーションし表示
デモ: □■⇒
n地図アプリ[5]l Google-map +東京メトロ路線+駅+電車l SVGパフォーマンス:
t路線: 線分
t駅: サークル
t電車: 線分X台= 線分
t電車移動:SVG-SMIL(アニメーション)
·
··
·
ブラウザーD3.js
PyDataTokyo#6-LT
Cytoscape
n遺伝子ネット・ワークの分析/表示[6]l開発:OSS(Javaベース),加州大サンディエゴ校+α ,米国政府補助
lインタラクティブ機能:カスタマイズ、編集、作成、....
l Import (ノード、エッジ)CSV:手操作, 2種類のファイルREST:プログラムから( Python, R)[7][8]
l Export: CSV, PNG, HTML
■V3.2.1(Java1.8) デモ切断 注:Cytoscape立ち上済
PyDataTokyo#6-LT ·
··
·
5可視化
22
作業工程元データ確認 分析 公開可視化
旧来 1可視化 2 Python+可視化 3 清書 4 作図
出力 n担当者使用+使いやすさ
論文 講演n第三者使用
+美しさ
新方法 5 インタラクティブ可視化●ブラウザー ●ウエブ ●サービス
Firefox Matplotlib
デバッグPSTricks
意思Matplotlib
Cytoscapeデバッグ意思
·
··
·
visualise = to form mental images or pictures
PyDataTokyo#6-LT
まとめ
23
n Pythonパッケージ・スタック
データ確認 統計 Local Browser
Pandas Seaborn MPLD3
Matplotlib
Web Browser
Bokeh
n今後の調査:Web,BrowserとJavaScript, Pythonの関係l高度インタラクティブ: Browser + JavaScript
lサービス: クラウド, Web
lBrowser高速化: JavaScript just-in-time (JIT) compiler
t Python on JIT, NumpyのFortranがネックか?lグラフィックスAPI: D3.js, Bokeh.js, ...?
·
··
·PyDataTokyo#6-LT
参考文献
[1] J. Hunter and M. Droettboom, “The architecture of open source
applications: Matplotlib,”開発責任者の解説. □■⇒
[2] S. Murray, “Interactive data visualization for the web: free
online,” Oreilly, 2013, 解説を読みながら、動かすことが出来る(フリー). □■⇒
[3] S. Murray and長尾高弘(訳), “インタラクティブ・データビジュアライゼーション―d3.jsによるデータの可視化,”オライリー・ジャパン, 2014,日本語翻訳本.
[4] M. Bostock, “Force-directed graph with
drag/zoom/pan/center/resize/labels/shapes/filter/highlight.”
□■⇒
[5] 奥田 幸男, “投稿アプリケーション tokyo metro watcher,” 東京メトロオープンデータ活用コンテスト応募アプリ, 2014. □■⇒
[6] “Cytescapehp,” University of California, San Diego. □■⇒
[7] K. Ono, “Py2cytoscape: Gihub,” University of California, San
Diego. □■⇒
[8] ——, “Basic workflow 2: Networkx and cytoscape,” University
of California, San Diego. □■⇒
·
··
·PyDataTokyo#6-LT