Python Plotly: использование выпадающего меню для переключения между картограммой и диаграммой рассеяния - PullRequest
0 голосов
/ 27 сентября 2018

Я новичок в использовании plotly и пытаюсь построить динамическую визуализацию с использованием python и plotly.Я надеюсь, что смогу переключаться между картой мира и графиком рассеяния с помощью раскрывающегося меню.

До сих пор мне удавалось успешно отображать выпадающее меню, отображать необходимые метки и дажепокажите один график, удалив либо карту хороплета, либо кривую рассеянного графика из переменной данных.Проблема заключается в том, что когда я пытаюсь реализовать оба графика, карта хороплета рисуется поверх графика рассеяния независимо от выбранного пункта меню.

A снимок экрана выходных данных.

Области, в которых я искал решение

Графика и просмотр разделов обновлений и макетов среди многих других.

Пересмотр ploty python страница учебника для выпадающих меню и реализации части предложения в моем коде с акцентом на метод обновления.

Я обнаружил страницу StackOverflow , которая выглядела оченьблизко к ответу, который мне нужен, но не совсем.

Наконец, я также искал форум сообщества plotly .

Код

Примечание, которое я удалилчасть кода, такая как импорт и данные в начале.

scatterplot = go.Scatter(

    y = df2['Renewable energy consumption (% of total final energy consumption) 2015'],
    x = df2['GDP per capita, PPP (constant 2011 international $) 2015'],
    mode='markers',
    ids=df2['Country Name'],
    showlegend = False,
      marker = dict(
          size = 8,
          color = np.random.randn(500),
        ),
      textfont = dict(
        size = 14,
        color = 'black')
)

choropleth_map = dict(
        type = 'choropleth',
        locations = df['ISO3166_alpha3'],
        z = df['renewables_mtoe'],
        text = df['Country'],
        colorscale = [[0,"rgb(106, 240, 255)"],[0.10,"rgb(106, 199, 255)"],[0.70,"rgb(50, 100, 255)"],[0.93,"rgb(0, 43, 198)"],\
          [0.99999,"rgb(0, 24, 109)"],[1,"rgb(220, 220, 220)"]],
        autocolorscale = False,
        reversescale = True,
        marker = dict(
            line = dict (
                color = 'rgb(180,180,180)',
                width = 0.5
            ) ),
        colorbar = dict(
            title = 'mtoe<br>',
            tickfont = dict(
                size = 16),
            titlefont = dict(
                size = 16)),
)

data = [choropleth_map, scatterplot]

updatemenus = list([
    dict(active=0,
         buttons=list([   
            dict(label = 'choropleth_map',
                 method = 'update',
                 args = [{'visible': [True,False]},
                         {'title': 'The Map'}]),
            dict(label = 'scatterplot',
                 method = 'update',
                 args = [{'visible': [False,True]},
                         {'title': 'Scatterplot'}]),
        ]),       
    )
])

layout = dict(title='default', showlegend=False,
                  updatemenus=updatemenus,
        geo = dict(showframe = True,
                    showcoastlines = False,
                    showland = True,
                    landcolor = '#dcdcdc',
                    projection = dict(type = 'natural earth'))
)

fig = dict( data=data, layout=layout )
plotly.offline.iplot(fig, validate=True)

Большое спасибо заранее всем, кто может помочь.Я потратил несколько дней, пытаясь решить эту проблему, и это даже заставило меня сделать свой первый пост в StackOverflow.

...