macでインフォマティクス

macでインフォマティクス

NGS関連のインフォマティクス情報についてまとめています。

データに適したグラフフォーマットとその描画コードを教えてくれる From Data to Viz

 

From Data to Vizは、決定木(wiki)を使ってデータの可視化に適したフォーマットを教えてくれるwebサイト。

 

From Data to Vizに関するツイート。


From data to Viz | Find the graphic you need

f:id:kazumaxneo:20180718083900p:plain

 

下記の決定木を使い、自分の所有しているデータタイプに適したフォーマットを絞り込む。

f:id:kazumaxneo:20180718084104p:plain

ここではカテゴリーを数値変数とする。

f:id:kazumaxneo:20180718170412j:plain

 

 数値変数(Numerical variable)が1つだけあるなら左端のルートになる。

f:id:kazumaxneo:20180718084323p:plain

 

少し下にスクロールする。histgramとdensity plotのアイコンがある。下のStoryをクリックすると、histgramとdensity plotの説明が得られる。

f:id:kazumaxneo:20180718084702p:plain

 

histgramのアイコンをクリックする。ポップアップしたウィンドウには特徴や注意事項などがまとめられている。 Rとpythonのコードのリンクがあるが、ここではpython gallalyの方をクリックする。

f:id:kazumaxneo:20180718085144p:plain

 

histgramのグラフ例が表示される。2変数以上使ったhistgram例も示されているが、変数が1つなので、例えば右上から1つ左のhistgramをクリックする。

f:id:kazumaxneo:20180718085540p:plain

 

これはNo21のグラフらしい。ページ下に描画するのに必要なコードが示されている。コードを見て、importしているライブラリで持ってないものはインストールする。このコードではsebornが必要になる。持ってなければconda(Anaconda環境)かpip(非Anaconda環境)で導入する。

f:id:kazumaxneo:20180718095016p:plain

 

実行例

描画に必要なコードを保存してファイルから呼び出しても良いが、ここでは対話モードにコードを直打ちして実行する(*1)。まずはpythonのバージョンを確認。

 $ python --version

Python 3.6.2 :: Anaconda custom (64-bit)

 

seabornが必要になる。 既にインストールしてあったseabornのバージョンを"conda  list"で確認。Anaconda環境でないなら、"pip freeze | grep -n "seaborn"。 

$ conda list | grep -n "seaborn"

190:seaborn                   0.8.1                    py36_0  

一応matplotlibのバージョンも確認しておく。

 $ conda list | grep -n "matplotlib"

111:matplotlib                2.0.2            py36h507e440_1  

 

pythonを対話モードで起動(または jupyter-notebookを使う )

$ python

Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43) 

[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> 

 

先ほど載っていたコードをコピペしていく。Rでおなじみのirisのデータ(参考ページ)を読み込んでいる。図が出力される。

f:id:kazumaxneo:20180718132856j:plain

 #sns.plt.show()はplt.show()に変えた(おそらく間違い)。

 

それぞれのコードの間にはコメントアウトして説明がある。不明なことがあればその都度調べて理解しておくと応用がきく。次の図のコードをペーストする。

f:id:kazumaxneo:20180718133117j:plain 

 

他のグラフ 

データに合わせて様々なフォーマットを提案してくれる。

 #35 Control order of boxplot

f:id:kazumaxneo:20180718143132j:plain

#40 Basic scatterplot | seaborn

f:id:kazumaxneo:20180718143240j:plain

#80 Contour plot with seaborn

f:id:kazumaxneo:20180718143006j:plain

#272 Map a color to bubble plot

f:id:kazumaxneo:20180718143342j:plain

 #404 Dendrogram with heat map

f:id:kazumaxneo:20180718142659j:plain

ライブラリ自体は、図によって使い分けている。seabornを使う場合もあれば、python版のggplotを使うものもある。このように、データ可視化にふさわしい図を客観的に見定め、必要なコードの原案を知ることで、図を描く手間を大幅に削減することができる。

 

全フォーマットから図を探すこともできる。

f:id:kazumaxneo:20180718143429j:plain

#111 Custom correlogram

f:id:kazumaxneo:20180718144630j:plain

 #150 Parallel plot with pandas

f:id:kazumaxneo:20180718145444j:plain

#197 Available color palettes with Matplotlib

f:id:kazumaxneo:20180718145124j:plain

#231 Chord diagram with Bokeh

f:id:kazumaxneo:20180718144231j:plain

 

ポスターを注文することもできます。ラボの壁に貼ってあればみんな興味を示すかもしれませんね。

f:id:kazumaxneo:20180718145833j:plain

 

感想

ポスターやインフォグラフィックの分野ではこのまま使えそうなクオリティがあります。イラレなどでさらに編集して体裁を整えれば、論文の図としても通用するのではないでしょうか? 

 

こちらも検討してみて下さい。

https://bokeh.pydata.org/en/latest/

 

引用

https://python-graph-gallery.com

 

参考HP

Pythonの可視化ツール、いろいろあるよ(みんなのPython勉強会)

https://slideship.com/users/@driller/presentations/2017/10/C9HQJ3vwMoAyzuMkeEdEV1/

 

*1  いつもは"alias ppp='python --version'"をbash_profileに記述して、pppだけでバージョン確認できるようにしている。他のコマンドと被らないようにする。