Python 使用plotly在mapbox上打印多边形
我正在尝试使用scattermapbox通过plotly绘制geojson几何图形 这段代码成功地从geopandas转换数据,以便plotly使用:Python 使用plotly在mapbox上打印多边形,python,plotly,Python,Plotly,我正在尝试使用scattermapbox通过plotly绘制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 = geopand
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 figure上绘制此数据:
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')
谢谢大家! 我通过以下方法成功做到了这一点:
layout = go.Layout(
height=1500,
autosize=True,
hovermode='closest',
mapbox=dict(
layers=[
dict(
sourcetype = 'geojson',
source = geoJSON,
type = 'fill',
color = 'rgba(163,22,19,0.8)'
)
],
accesstoken=mapbox_access_token,
bearing=0,
center=dict(
lat=53,
lon=0
),
pitch=0,
zoom=5.2,
style='light'
),
)
但是另一个问题出现了:如何从json向hover提供数据?回答第二个问题 通过使用传递到绘图的
Data
中的customdata
属性,从JSON向hover提供数据
另外:请您发送一个通用的json数据集,以便其他人可以轻松地运行您的代码块
链接到customdata
属性:
,您可以使用
text
并在悬停时显示text
属性中的数据。解决了abouve问题(请参见下面的ansver)我遇到了另一个问题:如何从json向悬停提供数据?您是如何在mapbox中绘制自己的多边形的?我似乎无法从你的代码片段中拼凑出来。。。你能编辑你的回答来帮助其他人回答同样的问题吗?