$30 off During Our Annual Pro Sale. View Details »

データを可視化する一般的なテク(?)~heatmapの拡張~ kaggle meetup #3

threecourse
October 28, 2017
900

データを可視化する一般的なテク(?)~heatmapの拡張~ kaggle meetup #3

threecourse

October 28, 2017
Tweet

Transcript

  1. データを可視化する一般的なテク(?)
    ~heatmapの拡張~
    threecourse

    View Slide

  2. motivation
    • Heatmapのセルの大きさを可変にするこ
    とにより、もう一つ情報を加えたい
    • 具体的な想定は商品×地域で、収益率とボ
    リュームを同時に見せるイメージ
    • ボリュームを見せることで、重要度や統計的
    な信頼度についても把握できる

    View Slide

  3. 成果物

    View Slide

  4. 成果物
    • Sample png2

    View Slide

  5. 成果物
    • Kaggle Kernel
    https://www.kaggle.com/threecourse/heatm
    ap-with-change-cell-size-feature
    • Github
    https://github.com/threecourse/kaggle-
    meetup-heatmap

    View Slide

  6. やったこと
    • Seabornのheatmapを改造
    – Heatmapはseaborn/matrix.pyの_HeatMapper
    クラス、heatmapメソッドに記述されている
    – Heatmapでは内部的にpcolormeshが使われてい
    る。これでは実現が難しいので、rectを1個1個書
    く方法に変更。
    – argumentとその使われ方を修正。keyword
    argumentの使い方をもう少し明示的にしてほし
    い。
    – annotationの追加はもともと機能にあった

    View Slide

  7. 既存のライブラリで
    何かが足りないときにどうするか
    method pros cons
    スクラッチで書く • 簡潔、動きがわかり
    やすい
    • ライブラリでいろん
    な状況を受け入れて
    いるところを結局自
    分で書くことになる
    既存のライブラリの一
    部をコピペする(適宜
    importを修正する)
    • ライブラリの上手い
    やり方を取り込むこ
    とができる
    • 小さな修正で済む場
    合がある
    • ライブラリの理解が
    深まる
    • いろんな状況を受け
    入れる設計になって
    いるため、考えるこ
    とが増える(ばっさ
    り切るのもあり)
    • ライブラリの理解や
    ライブラリの思想に
    合わせる必要がある

    View Slide

  8. seaborn
    • Seabornの見た目が綺麗な理由
    – sns.set()でset_context, set_style, set_paletteの3点を変更
    する。
    – context:ラベルや線やその他プロットの要素
    – style : axesの色、グリッドの有無やその他美的要素
    – palette : カラーパレット
    https://seaborn.pydata.org/tutorial/aesthetics.html
    • heatmapではargumentである程度のことはできる。ちゃん
    とドキュメントの引数の説明くらいは読んでおくのが良い。
    • 値から色空間へのマッピングが“組み込まれすぎ”な気がする。
    もう少し疎結合であってほしい。(例えば、d3.jsのdomain,
    rangeを指定してマッピングする)

    View Slide

  9. matplotlib
    • つらい
    • matplotlibの概念・構成、plotを作ったり修正するときにど
    ういう順番に考えていけば良いかがわかる本がほしい
    • (stackoverflowとかで調べて)plt.xxxでできるのはわかるけ
    ど、ax.xxxでやりたいんですけど…
    • globalに値を突っ込まれる場合が多いような・・・
    • 全体的な設定はrcparamsでできる。
    • rcparamsと各オブジェクトの操作が対応しているわけではな
    いので、各ArtistのAPIを見ていくしかない
    • Artistクラスに属するオブジェクトは、set(dict)とすると、
    set_key1(value1), set_key2(value2)という関数がそれぞ
    れ呼びだされる。
    • ちょっとした関数を作るときには、ax_kwsのような引数に
    dictを入れて、setで属性を設定するのがわかりやすいか

    View Slide