Roxanna Wijtsma
Roxanna Wijtsma

Reputation: 11

Plotly Animated Bubble Chart does not change values each year

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

Answers (1)

r-beginners
r-beginners

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()

enter image description here

Upvotes: 2

Related Questions