我正在尝试使用 dash 和 plotly 生成一个散点图框,当我在标记内指定一个符号(例如“正方形”)时,它不会在生成 map 时呈现。 我正在使用回调函数,我尝试了几个符号,但没有一个有效,但圆圈标记。 有什么明显的我想念的吗? 这是一个最小的示例,要运行它,您需要一个 mapbox token 。
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import datetime as dt
app = dash.Dash()
mapbox_access_token = 'YOUR_MAPBOX_TOKEN_HERE'
app.layout = html.Div(children=[
html.H1('Dashboard'),
dcc.DatePickerRange(id='fecha',
start_date=dt.datetime.today() - dt.timedelta(days=30),
end_date=dt.datetime.today()
),
html.Center(dcc.Graph(
id='mapa',
figure={
'data': [
go.Scattermapbox(
lat=[],
lon=[],
)
],
'layout': go.Layout(
autosize=False,
width=1300,
height=800,
hovermode='closest',
showlegend=False,
mapbox=dict(
accesstoken=mapbox_access_token,
bearing=0,
center=dict(
lat=-32,
lon=-70
),
pitch=0,
zoom=5,
),
)
})
,)
])
@app.callback(
dash.dependencies.Output('mapa', 'figure'),
[dash.dependencies.Input('fecha', 'start_date'),
dash.dependencies.Input('fecha', 'end_date')
])
def update_graph(inicio,fin):
Data = [go.Scattermapbox(
name='square',
lat=[-31,-30],
lon=[-71,-71],
marker = dict(
symbol='square',
size = 8,
opacity = 0.8,
color='grey'
),
text = np.array(['square1','square2'])),
go.Scattermapbox(
name='circle',
lat=[-31,-30],
lon=[-72,-72],
marker = dict(
symbol='circle',
size = 8,
opacity = 0.8,
color='grey'
),
text = ['circle1','circle2'])]
figure={
'data': Data,
'layout': go.Layout(
title='Visitas',
autosize=False,
width=1300,
height=800,
hovermode='closest',
showlegend=True,
mapbox=dict(
accesstoken=mapbox_access_token,
bearing=0,
center=dict(
lat=-30.5,
lon=-72
),
pitch=0,
zoom=5,
),
)
}
return figure
if __name__ == '__main__':
app.run_server(host= '0.0.0.0',port=9999)
我尝试制作没有破折号的相同 map 框(即只是 plotly),但它再次失败,所以这不是破折号问题,这是我如何使用 plotly 制作 map (为此你需要一个 plotly 帐户):
import plotly.graph_objs as go
import plotly.plotly as py
mapbox_access_token = 'YOUR_TOKEN_HERE'
Data = [go.Scattermapbox(
name='square',
lat=[-31,-30],
lon=[-71,-71],
marker = dict(
symbol='square',
size = 8,
opacity = 0.8,
color='grey'
),
text = ['square1','square2']),
go.Scattermapbox(
name='circle',
lat=[-31,-30],
lon=[-72,-72],
marker = dict(
symbol='circle',
size = 8,
opacity = 0.8,
color='grey'
),
text = ['circle1','circle2'])]
figure={
'data': Data,
'layout': go.Layout(
title='Visitas',
autosize=False,
width=1300,
height=800,
hovermode='closest',
showlegend=True,
mapbox=dict(
accesstoken=mapbox_access_token,
bearing=0,
center=dict(
lat=-30.5,
lon=-72
),
pitch=0,
zoom=5,
),
)
}
py.iplot(figure, filename='Broken fig')
在此先感谢,我仍然不知道我是否遗漏了一些明显的东西。
最佳答案
我发现问题主要出在两件事上:
- 在标记中混合符号(正方形),具有默认大小和颜色(不支持此功能)。
- Scattermapbox 不支持符号(正方形),您可以在此处找到列表:Supported Symbols! .
我还打开了一个 github 问题,您可以在其中找到更多信息 github issue
关于python - 当我用符号在轨迹中绘制标记时,它没有显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47583064/