【发布时间】:2019-10-05 15:35:12
【问题描述】:
我正在尝试使用 scattermapbox 绘制 geojson 几何图形。
这段代码成功地将 geopandas 中的数据转换为 plotly 使用:
from plotly.offline import download_plotlyjs, init_notebook_mode,
plot, iplot
import plotly.graph_objs as go
mapbox_access_token = 'mykey'
import json
from_json = geopandas_gdf.to_json()
geoJSON = json.loads(from_json)
pts=[]#list of points defining boundaries of polygons
for feature in geoJSON['features']:
if feature['geometry']['type']=='Polygon':
pts.extend(feature['geometry']['coordinates'][0])
pts.append([None, None])#mark the end of a polygon
elif feature['geometry']['type']=='MultiPolygon':
for polyg in feature['geometry']['coordinates']:
pts.extend(polyg[0])
pts.append([None, None])#end of polygon
else: raise ValueError("geometry type irrelevant for map")
X, Y=zip(*pts)
我可以使用以下代码将这些数据绘制在 blanc 图形上:
axis_style=dict(showline=False,
mirror=False,
showgrid=False,
zeroline=False,
ticks='',
showticklabels=False)
layout=dict(title='map',
width=700, height=700,
autosize=False,
xaxis=axis_style,
yaxis=axis_style,
hovermode='closest')
fig=dict(data=data, layout=layout)
plot(fig, filename='map')
但我无法在 scattermapbox 上绘制它。像这样尝试:
data = [
go.Scattermapbox(
lat=X,
lon=Y,
line = go.scattermapbox.Line(width=5,
color='red'))
]
layout = go.Layout(
autosize=True,
hovermode='closest',
mapbox=go.layout.Mapbox(
accesstoken=mapbox_access_token,
bearing=0,
center=go.layout.mapbox.Center(
lat=53,
lon=0
),
pitch=0,
zoom=5
),
)
fig = go.Figure(data=data, layout=layout)
plot(fig, filename='Montreal Mapbox')
谢谢!
【问题讨论】:
-
解决了上述问题(请参阅下面的答案)我有其他问题:如何提供来自 json 的数据以悬停?