Hi All,
An animation example from this link Intro to animations in Python is not working with Plotly 2.0.12. I put the error output below. Is there any way to solve the problem except for downgrading the Plotly version?
PlotlyError: Invalid 'figure_or_data' argument. Plotly will not be able to properly parse the resulting JSON. If you want to send this 'figure_or_data' to Plotly anyway (not recommended), you can set 'validate=False' as a plot option.
Here's why you're seeing this error:
'slider' is not allowed in 'layout'
Path To Error: ['layout']['slider']
Valid attributes for 'layout' at path ['layout'] under parents ['figure']:
['angularaxis', 'annotations', 'autosize', 'bargap', 'bargroupgap',
'barmode', 'barnorm', 'boxgap', 'boxgroupgap', 'boxmode', 'calendar',
'direction', 'dragmode', 'font', 'geo', 'height', 'hiddenlabels',
'hiddenlabelssrc', 'hidesources', 'hoverlabel', 'hovermode', 'images',
'legend', 'mapbox', 'margin', 'orientation', 'paper_bgcolor',
'plot_bgcolor', 'radialaxis', 'scene', 'separators', 'shapes',
'showlegend', 'sliders', 'smith', 'ternary', 'title', 'titlefont',
'updatemenus', 'width', 'xaxis', 'yaxis']
Run `<layout-object>.help('attribute')` on any of the above.
'<layout-object>' is the object at ['layout']
from plotly.offline import init_notebook_mode, iplot from IPython.display import display, HTML import pandas as pd init_notebook_mode(connected=True) 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) # make figure figure = { 'data': [], 'layout': {}, 'frames': [], 'config': {'scrollzoom': True} } # fill in most of layout figure['layout']['xaxis'] = {'range': [30, 85], 'title': 'Life Expectancy'} figure['layout']['yaxis'] = {'title': 'GDP per Capita', 'type': 'log'} figure['layout']['hovermode'] = 'closest' figure['layout']['slider'] = { 'args': [ 'slider.value', { 'duration': 400, 'ease': 'cubic-in-out' } ], 'initialValue': '1952', 'plotlycommand': 'animate', 'values': years, 'visible': True } figure['layout']['updatemenus'] = [ { 'buttons': [ { 'args': [None, {'frame': {'duration': 500, 'redraw': False}, 'fromcurrent': True, 'transition': {'duration': 300, 'easing': 'quadratic-in-out'}}], 'label': 'Play', 'method': 'animate' }, { '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' } ] sliders_dict = { 'active': 0, 'yanchor': 'top', 'xanchor': 'left', 'currentvalue': { 'font': {'size': 20}, 'prefix': 'Year:', 'visible': True, 'xanchor': 'right' }, 'transition': {'duration': 300, 'easing': 'cubic-in-out'}, 'pad': {'b': 10, 't': 50}, 'len': 0.9, 'x': 0.1, 'y': 0, 'steps': [] } # make data year = 1952 for continent in continents: dataset_by_year = dataset[dataset['year'] == year] dataset_by_year_and_cont = dataset_by_year[dataset_by_year['continent'] == continent] data_dict = { 'x': list(dataset_by_year_and_cont['lifeExp']), 'y': list(dataset_by_year_and_cont['gdpPercap']), 'mode': 'markers', 'text': list(dataset_by_year_and_cont['country']), 'marker': { 'sizemode': 'area', 'sizeref': 200000, 'size': list(dataset_by_year_and_cont['pop']) }, 'name': continent } figure['data'].append(data_dict) # make frames for year in years: frame = {'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] data_dict = { 'x': list(dataset_by_year_and_cont['lifeExp']), 'y': list(dataset_by_year_and_cont['gdpPercap']), 'mode': 'markers', 'text': list(dataset_by_year_and_cont['country']), 'marker': { 'sizemode': 'area', 'sizeref': 200000, 'size': list(dataset_by_year_and_cont['pop']) }, 'name': continent } frame['data'].append(data_dict) figure['frames'].append(frame) slider_step = {'args': [ [year], {'frame': {'duration': 300, 'redraw': False}, 'mode': 'immediate', 'transition': {'duration': 300}} ], 'label': year, 'method': 'animate'} sliders_dict['steps'].append(slider_step) figure['layout']['sliders'] = [sliders_dict] iplot(figure)