Plotly㉗(高精細な地図 mapbox)

mapboxを利用すると、より高精細な地図を表示することができます。

mapboxサイトで事前にアカウントを登録し、アクセストークンを取得しておきましょう。

mapbox - https://www.mapbox.jp/

高精細な地図 mapbox

mapboxを利用するには、layoutmapbox属性plotly.objects.layout.Mapboxインスタンスを設定します。

Mapboxクラスの引数は下記の通りです。

  • accesstoken
    mapboxのアクセストークン
  • center
    描画領域中央の緯度(lat)、経度(lon)
  • zoom
    ズームレベル

下記のコードでは、Scattermapboxクラスを使って、mapboxを利用した散布図を地図上に描画しています。
(Scattergeoと同様の引数を使用することができます。)

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import numpy as np
import plotly.graph_objects as go

populations = np.array([38_505_000, 34_365_000, 28_125_000])
area = np.array([8_223, 3_367, 2_240])
lon, lat = [139.691711, 106.845131, 77.216667], [35.6, -6.214620, 28.666668]
text = ["Tokyo", "Jakarta", "Delhi"]

mapbox_token = '********************' # アクセストークンを設定

go.Figure(
go.Scattermapbox(
lon=lon,
lat=lat,
text=text,
marker={
"size": populations / 1000000,
"color": populations / area,
"cmin": 1000,
"cmax": 15000,
"colorbar": {"title": "人口密度"}
}
),
layout={
# Mapboxインスタンス
"mapbox": go.layout.Mapbox(
accesstoken=mapbox_token, center={"lat": 19, "lon": 95}, zoom=2
)
}
).show()

[実行結果]