Pythonと本と子供と雑談と

いつからはじめても遅くない

Pythonの可視化フレームワークDashの新機能(はんなりPython LT)

f:id:mazarimono:20190519194301p:plain

はんなりPythonではディスカッション会=>LT会=>Hands On会というサイクルを回しています。

5月はLT会ということで、発表するで!!!ということで、最近買ったラズパイでなんやかんやしようと思ったのですが、ラズパイ難しい・・・ということで、挫折してしましました。そのかわりというか、なんというか、1月にはんなりPythonのハンズオンで、Pythonの可視化フレームワークであるDashを取り上げて以降、新たなコンポーネントが3つも出ていたのと、既存のやつでも軽んじていたら実は凄かった!!というものがあったので、それらを紹介することにしました。

作り方も変えたのですが、そのせいでherokuへのあげ方がわからなくなるというアクシデントがあり、まだ解決していません。分かる方がおられれば教えていただけると幸いです。

[;contents]

ファイルの分割

さて発表資料はDashで作っています。なので、herokuにあげられない=見せることはできないのですが、コードはgithubにあげてありますので、そのままcloneしてもらうとローカルで動かすことができます。

github.com

ちなみに、これまではapp.pyファイルに全てコードを突っ込んでという書き方をしていました。下のものははんなりPythonとPydata Osakaの共催のときに作ったコードですが、1850行コードが有り、

github.com

  • コールバックをlayoutの外で書かねばならない。
  • カッコがとにかく大量に・・・

ということで、一つのファイルだとなんだかよく分からない。あと、これまではタブで分けてたけど、ページで切り替えたいみたいなことから、Dashの複数URLページの書き方を見ながら、どんな書き方をしようか考え、今回はファイルをわけて書きました。

dash.plot.ly

そうすると、プレゼンテーションな形のファイルでも全く混乱することなく作ることができました。あと、これまで何度かこういう形のDashのファイルを作ってきたので、今回の場合は1日でこのファイルを作ることができました。

実は、Dashのページにはレイアウトもコールバックも分けてしまうという書き方も提案されていましたが、そこまでバラバラにしてしまうと、逆にどこで何をしているのか分からなくなってしまいそうだったので、1ページ1ファイルの形にしました。そうすると良い感じでした。

でもherokuにあげられないとなぁ・・・ということで、そのうちdashのサイトで聞いてみようかと思っています。

新機能

Dashをみていると、どんどん新たな機能が出てきています。この開発の速さやばい。

Dashを追っている人も少ないかもしれませんので、基本機能も知らないという方には、わたしがQiitaに書いた記事をチェックしてもらえればと思います。

qiita.com

とりあえずインタラクティブにどんどん動かせるし、ウェブアプリケーションにできるし、プレゼンでも使えるので、全てのデータビジュアライゼーションを行いたい人、あと、データから何かを発見したい人にDashは超オススメです。

さてそれでは機能の解説に移りましょう!

Dash DAQ

Dash DAQは前からありましたが、ちょっと今一つどんなものかイメージできなかったので、取り扱っていませんでした。しかし、ちょっと余裕があるときにチェックしてみると、専用サイトもあってなかなかすごい。ラズパイなどを扱い始めると、そのGUIにも使えそうで良いなぁという感じで、ちょっと使い勝手がいろいろとありそうだなぁという感じでした。PythonGUIに使えるやつが案外少ないというのも、これを使いたいと思った要因であります。

www.dashdaq.io

DAQってなんやねんというと、データ収集のことで、まさに私が今やろうとしていることであって(できてませんが)、これとk8sを組み合わせてデータを集めたりできたら最高やなぁという感じです。はんなりPythonでラズパイ部をやろうかという話もあったりして、ちょっとその辺も面白いところではあります。我々の定期的開催力は中々他では見られないようですし。

www.ni.com

f:id:mazarimono:20190519193204g:plain

Dash Cytoscape

ネットワークを表すグラフというものがあり、それを描けるのがこのDash Cytoscapeです。ネットワークの本を最近読んでまして、これもできたら良いなぁと思うものの、そのへんに落ちているデータでこれを使うとかは今の所、難しい感じです。データをどのように作るかってがあったり、色々難しいですなーと言うのが一つ問題としてあります。RDFとかいう繋がりを表せるというデータもあるのですが、それをどうやったら扱いやすいデータになるのかということも、ちょっとよくわかっていないので、その辺りを時間のあるときにガーッとやってしまいたいなぁなんて考えています。

f:id:mazarimono:20190519193404g:plain qiita.com

Dash Canvas

Dash Canvasはアプリケーション上で、絵を書いたりできる!!!というと何やそれって感じです。

私もそう思いました。しかし、DAQを見逃していたときのように、何やこれいらんなぁとちょっとだけ見て思うのではなく、詳しく見ておいたほうが良いという学びを今回は活かしました。ドラえもんを書きながら、その次の事例や、サンプルを色々見ると、これはとんでもないぶっ飛んだものでした。

ちょっと動くものはアップできていないので、サンプルをどうぞ。

dash.plot.ly

途中まで、塗り絵やんという感じですけど、scikit imageが出てくると一気に印象が変わります。最後のものは丸と線で細胞(多分)が色塗りされるという、驚愕の動作を行っています。scikit imageをあまり知らないので、単体でできるのかはよくわかっていませんが・・・

さて次のサンプルはもっとすごくて、車の位置を取れたり(機械学習のデータ作り)、背景が取り除けたりまぁ色々できて凄いなぁということを感じさせてくれるサイトです。これを見るととんでもないなこの機能!!ということがわかって、見逃してはいけないものだということを痛感させてくれます。

dash-canvas.plotly.host

f:id:mazarimono:20190519193636g:plain

Dash Bio

最後はDash Bioです。もともとDashでも3Dモデルみたいなのが作れるサンプルがありました。

github.com

このサンプルを見ていると、370行書いて、この3Dモデルを表示しているということがわかります。これでもこんだけの表示をしているってことを考えると少ない行数で行けるんだなぁという感じです。しかし、Dash Bioの場合・・・ 10行くらいで3Dモデルが描けてしまいます。

dash.plot.ly

f:id:mazarimono:20190519193811g:plain

何ということでしょう。多分これに食わせるデータを作るのが大変だったりするのかもしれませんが、なんともすごいですね。この辺りのコードも見たいところです。その他のサンプルでもややこしいことが10行以内にできてたりします。ツンでもねー

  • 追記 * そういえばDash Bioはウィンドウズでpip install すると私のPCだと無理です。ってなっていました。

まとめ

以上、Dashの新機能を見てみました。

Dashはもとからトンデモなかったのですが、新たなツール群もブチ切れ感があって凄いです。DAQはデータ収集、IoTという感じで、これからどんどん使えそうな部分である感じがします。cytoscapecanvas、bioの3つはバイオ系向けですが、他でも色々使えるところがあるだろうなぁという感じです。

これからもどんどん色々と使えるツールが増えそうで、Dashは本当に恐ろしいですね。はい。私もどんどん使いたいと思います。DAQとBioとか使わせてくれる仕事ないかなぁ〜

当日の様子、他の方の発表などははんなりPythonのブログで!!!

hannaripython.hatenadiary.com

情報可視化 データ分析・活用のためのしくみと考えかた

情報可視化 データ分析・活用のためのしくみと考えかた