今回はJupyter Notebookに外部拡張を導入する方法です。
例としてJavaScript製マップ活用ライブラリleaflet.jsのJupyter Notebook用拡張、ipyleafletをいれてみます。
実際のところ
環境導入
$ pip install ipyleaflet $ jupyter nbextension enable --py --sys-prefix ipyleaflet
スクリプト本体
Cellに一個一個こんな感じで入力
from __future__ import print_function from ipyleaflet import ( Map, Marker, TileLayer, ImageOverlay, Polyline, Polygon, Rectangle, Circle, CircleMarker, GeoJSON, DrawControl )
center = [34.6252978589571, -77.34580993652344] zoom = 10
m = Map(center=center, zoom=zoom) m
このノートブックを実行すると、以下のようになります
GeoJSONを読み込む
更に、leaflet.jsでGeoJSONデータを扱う - Bye Bye MooreでやったようにGeoJSON形式のデータをよろしく扱うことができます。
まず実験用にGithubのサンプルからデータを導入しときます。
$ curl -O https://raw.githubusercontent.com/jupyter-widgets/ipyleaflet/master/examples/demo.json
この状態で、マップを閉じる前あたりに以下のような感じでセルを追記
import json with open('demo.json') as f: data = json.load(f)
g = GeoJSON(data=data)
m.add_layer(g)
こうすると、こうなります
消したい時はこうします
m.remove_layer(g) g.close()
結果はそのままではPDF化できない
JavaScriptでレンダリングしている関係で、TeXを経由するPDF出力には対応していません。
どうしても使いたい場合、静止画にして別途保存しないといけません。