nend・nex8のエンジニア・技術ブログ2017-12-27Processing.pyによるデータの可視化についてインターンこんにちは、弊社で2ヶ月間インターンとして働いているg_takahashiです。データの美しい視覚化に取り組んでいました。まとめていこうと思います。Processing.pyです。Verは3.3.6です。紹介する内容Processingってなんですか?作成されたもの詰まった所と学習法ArtとVisualizationの違い2ヶ月インターン総括Processingってなんですか?Processingは芸術家向けのプログラミング言語といった感じです。基本的にJavaの構文が流用されます。簡単なゲームなんかも作れるようです。Animationの動きが良く、インタラクティブアート作品にも使われます。Processing.pyはPythonで書けるように、少しいじられています。現在では、docsが整っていないように感じます。公式(http://py.processing.org/)もそこまで親切ではありません。参考書籍はJavaモードで書かれています。ちなみに、PythonのLibraryは基本的に使えません。PandasやNumpyなどは無理ですね。今回のインターンでは、筆者の力量不足からPythonモードを使いましたが(Pythonもほとんどできていなかったけれど)、次回以降はJavaで書いていこうと思います。これはPythonモードでは処理速度が遅いためです。具体的に言うと、PythonモードではBoidという鳥モデルを使うとき、50個くらいでもたつき始めるのですが、Javaモードだと300個までいけます。mode補足すべきことは、Processing専用のmoduleが充実していることです。PeasyCamを使えば、簡単に3Dでの視覚を拡張することができます。アニメーションでよく利用されるBox2Dも使えるため、現実的な動きが再現できます。商品を購入したユーザーはどのような商品を買っているのかということに着目して作成しました。角度は離散値で、570個に分類分けされた商品を360度に変換して表示しています。そのため、たまに生じる左右への”ゆらぎ”は隣り合った商品を購入していることがわかります。(画素の問題も多分にありますが。)また、円の濃淡の区切りは購入数に対応します。円に到達した場合、右下に赤字で書かれた数を購入したことになります。中央の赤丸からスタートしていて、近くで細かく動いている理由は、購入アイテム数によって降べきの順に並べているからです。このグラフからは商品を大量に購入しているユーザーは少数の商品のみを大量に購入していることがわかります。点線が動かない方向、つまりあまり購入されない商品がわかります。一つの商品の種類を100以内の購入量で抑えて、他の商品も同様に購入するユーザーもいることがわかりました。SQLの形をある程度整えると、時刻、購入数を変更してもグラフが書けるように設計したことで、グラフの再現性を高めることができました。一度もProcessingに触ったことがなかったので、いろいろな本やブログを参照しました。ゲーム作りとかもやったことがなく、パーリンノイズとか、力学の応用は初めて使いました。同じようなスタートの人には次の勉強ルートがおすすめです。code](ググるとpdfで見つかります。