Saya mencoba membuat scattermapbox menggunakan tanda hubung dan plotly, ketika saya menentukan simbol (misalnya "persegi") di dalam penanda, itu tidak ditampilkan saat peta dibuat. Saya menggunakan fungsi panggilan balik dan saya mencoba beberapa simbol, tidak ada yang berfungsi, selain penanda lingkaran. Apakah ada sesuatu yang jelas yang saya lewatkan? Berikut adalah contoh minimal, untuk menjalankannya Anda memerlukan token mapbox.

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)

Saya mencoba membuat kotak peta yang sama tanpa tanda hubung (yaitu hanya plotly), dan gagal lagi, jadi ini bukan masalah tanda hubung, inilah cara saya membuat peta dengan plotly (untuk ini Anda memerlukan akun 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')

Terima kasih sebelumnya, saya masih tidak tahu apakah saya melewatkan sesuatu yang jelas.

2
Harald Heitmann 1 Desember 2017, 00:40

1 menjawab

Jawaban Terbaik

Saya menemukan bahwa masalahnya terutama oleh 2 hal:

  • Mencampur penanda simbol (persegi), dengan ukuran dan warna default (fitur ini tidak didukung).
  • Simbol (persegi) tidak didukung oleh Scattermapbox, Anda dapat menemukan daftar di sini: Simbol yang Didukung!.

Saya juga membuka masalah github di mana Anda dapat menemukan lebih banyak info masalah github

1
Harald Heitmann 5 Desember 2017, 21:16