Black Lives Matter. Please consider donating to Black Girls Code today.

Recreating Gapminders dataset graph

I’ve been trying to recreate plotly’s example from Gapminders dataset link (you may have to scroll down, sorry for that) and I am able to recreate it to some extent heres the code i.e. animation = working, buttons = working if and only if I remove the sliders part.

Non working part:(sliders added, Please note the working one does not have sliders)

import pandas as pd
import numpy as np
import plotly.offline as py
from plotly import graph_objs as go
py.init_notebook_mode(connect = False)


url = 'https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv'
dataset = pd.read_csv(url)

years = ['1952', '1962', '1967', '1972', '1977', '1982', '1987', '1992', '1997', '2002', '2007']
# make list of continents
continents = []
for continent in dataset['continent']:
    if continent not in continents:
        continents.append(continent)

year = 1952

data = []
for continent in continents:
    dataset_by_year = dataset[dataset['year'] == year]
    dataset_by_year_and_cont = dataset_by_year[dataset_by_year['continent'] == continent]    
    trace = go.Scatter(
            x = list(dataset_by_year_and_cont['lifeExp']),
            y = list(dataset_by_year_and_cont['gdpPercap']),
            text = list(dataset_by_year_and_cont['country']),
            mode = 'markers',
            marker = dict(
                    sizemode = 'area',
                    sizeref = 200000,
                    size = list(dataset_by_year_and_cont['pop'])
            ),
            name = continent
    )
    data.append(trace)


layout = go.Layout(
        title = 'Countries',
        xaxis = dict(
                range = [30,85],
                title = 'Life Expectancy',
        ),
        yaxis = dict(
                title = 'GDP per Capita',
                type = 'log'
        ),
        hovermode = 'closest',
        sliders = [dict(
                visible = True,
                active = 0,
                yanchor = 'top',
                xanchor = 'left',
                currentvalue = dict(
                        font = {'size':20},
                        prefix = 'Year:',
                        visible = True,
                        xanchor = 'right'
                    ),
                transition = dict(
                        duration = 300,
                        easing = 'cubic-in-out'),
                pad = {'b':10, 't': 50},
                len = .9,
                x = 0.1,
                y = 0,
                #updating parameter
                steps = []
        )],
        updatemenus = [
        dict(
        buttons = [
            dict(
                args = [None, {'frame': {'duration': 500, 'redraw': False},
                         'fromcurrent': True, 'transition': {'duration': 300, 'easing': 'quadratic-in-out'}}],
                label = 'Play',
                method = 'animate'
            ),
            dict(
                args = [[None], {'frame': {'duration': 0, 'redraw': False}, 'mode':'immediate',
                'transition':{'duration': 0}}],
                label = 'Pause',
                method = 'animate'
            )
        ],
        direction =  'left',
        pad = {'r': 10, 't': 87},
        showactive =  False,
        type = 'buttons',
        x = 0.1,
        xanchor = 'right',
        y = 0,
        yanchor = 'top'
         )
    ]
)

#making animation
frames_update = []

for year in years:
    frames = {'data': [], 'name':str(year)}
    for continent in continents:
        dataset_by_year = dataset[dataset['year'] == int(year)]
        dataset_by_year_and_cont = dataset_by_year[dataset_by_year['continent'] == continent]

        trace = go.Scatter(
                x = list(dataset_by_year_and_cont['lifeExp']),
                y = list(dataset_by_year_and_cont['gdpPercap']),
                text = list(dataset_by_year_and_cont['country']),
                mode = 'markers',
                marker = dict(
                        sizemode = 'area',
                        sizeref = 200000,
                        size = list(dataset_by_year_and_cont['pop'])
                ),
                name = continent
)
        frames['data'].append(trace)
    frames_update.append(frames)

    slider_step = dict(args = [
        [year],
        {'frame': {'duration': 300, 'redraw': False},
         'mode': 'immediate',
       'transition': {'duration': 300}}
     ],
     label =  year,
     method = 'animate')
    layout['sliders']['steps'].append(slider_step)


fig = go.Figure(data = data, frames = frames_update, layout = layout)
py.iplot(fig)

Please help! Thanks in advance.

##Edit 1: not able to access inner most functions e.g. layout['updatemenus']['buttons'] and layout['sliders']['steps'] any help on how to access could solve the problem.

##Edit 2: It works now, the major change that needed to be made was to add it as a list on sliders.