Reputation: 11
I'm new to visualizing with plotly and am trying to create an animated bubble chart. I have a dataframe of the happiness score, GDP per capita, Social support of all countries in the world from the years 2015 to 2019. I have followed a tutorial on how to make a simple animated bubble chart to slide over the years. This is my code:
fig = px.scatter(df_total_all_years, x="GDP per capita", y="Score", animation_frame='Year', animation_group='Country', size="Social support", color='Country',height=800, hover_name='Country', log_x=True, size_max=60)
fig.layout.updatemenus[0].buttons[0].args[1]['frame']['duration'] = 700
fig.update_layout(title="Happiness Score")
fig.show()
It does show me a bubble chart and I can slide the years but the values (the bubble charts) do not change when I slide over the years. When I hover over the bubbles it still shows me the value of 2015 when, for example, I have slided to the year 2019.
Can someone please advise me what I did wrong in my code?
Thank you so much!
Upvotes: 1
Views: 673
Reputation: 35155
I didn't have the data for your question, so I created the data from here. On the right side menu [Chapter 2 Online Data Expanded with Trust and Governance] (https://s3.amazonaws.com/happiness-report/2015/Chapter2OnlineData_Expanded-with-Trust-and-Governance.xlsx) from the sheet name: [Chapter2OnlineData_Expanded-wit] processed. Next time you post the data together with the data, you'll get an answer more quickly.
df_total.columns = ['country', 'Year', 'Score', 'GDP per capita','Social support','Healthy life', 'Continent']
df_total.fillna(0, inplace=True)
df_total.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1106 entries, 0 to 1105
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 country 1106 non-null object
1 Year 1106 non-null int64
2 Score 1106 non-null float64
3 GDP per capita 1106 non-null float64
4 Social support 1106 non-null float64
5 Healthy life 1106 non-null float64
6 Continent 1106 non-null object
dtypes: float64(4), int64(1), object(2)
memory usage: 69.1+ KB
df_total.head()
country Year Score GDP per capita Social support Healthy life Continent
0 Afghanistan 2008 3.723590 7.178332 0.450662 47.862461 South Asia
1 Afghanistan 2009 4.401778 7.344422 0.552308 48.275078 South Asia
2 Afghanistan 2010 4.758381 7.400804 0.539075 48.673412 South Asia
3 Afghanistan 2011 3.831719 7.435526 0.521104 49.053383 South Asia
4 Afghanistan 2012 3.782938 7.545960 0.520637 49.415783 South Asia
import plotly.express as px
fig = px.scatter(df_total, x="GDP per capita", y="Score",
animation_frame='Year', animation_group='country',
size="Social support", color='Continent',
height=800, hover_name='country', log_x=True, size_max=60)
fig.layout.updatemenus[0].buttons[0].args[1]['frame']['duration'] = 700
fig.update_layout(title="Happiness Score")
fig.show()
Upvotes: 2