🙄

pydeckを試す

2020/10/11に公開

あいさつ

本記事では主に、"pydeck"のインストールからAnaconda(Jupyter)で使えるようにするまでを書こうと思います。
pydeckは、pythonでデータを加工しながらすぐにdeck.glで視覚化したいという人向けだと思います。streamlitと利用してアプリとしての活用も可能です。

streamlitでローカルに表示したモノ

※ 前提として、Anacondaのインストールは済ませてあるものとします。

pydeckとは

まず"pydeck"について簡単に説明します。
https://deckgl.readthedocs.io/en/latest/index.html
には
"High-scale spatial rendering in Python, powered by deck.gl."
と説明してあります。
日本語では
『deck.glを利用した大規模の空間レンダリング』
となります。
個人的には、データを地図に合わせて視覚的に表現するための機能がメインだと思います。

インストール

さっそく"pydeck"のインストールに入ります。
基本的には
"https://deckgl.readthedocs.io/en/latest/index.html"
に沿って進めていきます。
インストールの流れとしては

  1. conda でpydeckライブラリをインストール
  2. MapboxのAPIトークンを取得 (これは後でも大丈夫)
  3. JupyterLabとJupyterNotebookでpydeckを利用できるようにする。

今回はAnaconda上でインストールするので "Via Conda" を利用します.

conda install -c conda-forge pydeck

をAnacondaの任意の環境のターミナルで実行してください。

pipを利用する方は

pip install pydeck

これでAnacondaにpydeckをインストールできました。


次にMapboxのAPIトークンを取得します。
https://account.mapbox.com/auth/signup/
でアカウントを作成すれば取得できます。

取得したAPIトークンを
/.conda/envs/プロジェクト名/lib/python3.8/site-packages/pydeck/bindings/deck.py

mapbox_key=" " 

にペーストします。"None"は消してしまって構いません。
ex)

google_map_keyは "None" でも大丈夫です。


次にJupyterの設定をします。
Jupyter Notebookを利用の方は、
pydeckをインストールしたターミナルを開き

jupyter nbextension install --sys-prefix --symlink --overwrite --py pydeck
jupyter nbextension enable --sys-prefix --py pydeck

を入力します。
JupyterLabの場合は

jupyter labextension install @jupyter-widgets/jupyterlab-manager
DECKGL_SEMVER=`python -c "import pydeck; print(pydeck.frontend_semver.DECKGL_SEMVER)"`
jupyter labextension install @deck.gl/jupyter-widget@$DECKGL_SEMVER

これでJupyterのセットは完了です。


以上で、pydeckを使う準備ができました。

jupyterで以下を入力して画像が出ましたら成功です。

import pydeck as pdk

UK_ACCIDENTS_DATA = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/examples/3d-heatmap/heatmap-data.csv'

layer = pdk.Layer(
    'HexagonLayer',  # `type` positional argument is here
    UK_ACCIDENTS_DATA,
    get_position=['lng', 'lat'],
    auto_highlight=True,
    elevation_scale=50,
    pickable=True,
    elevation_range=[0, 3000],
    extruded=True,
    coverage=1)

# Set the viewport location
view_state = pdk.ViewState(
    longitude=-1.415,
    latitude=52.2323,
    zoom=6,
    min_zoom=5,
    max_zoom=15,
    pitch=40.5,
    bearing=-27.36)

# Combined all of it and render a viewport
r = pdk.Deck(layers=[layer], initial_view_state=view_state)
r.to_html('hexagon-example.html')

以上で本記事を終わります。

Discussion