首页 > 解决方案 > Plotly 动画气泡图不会每年更改值

问题描述

我是使用 plotly 进行可视化的新手,我正在尝试创建一个动画气泡图。我有一个数据框,其中包含 2015 年至 2019 年世界上所有国家的幸福指数、人均 GDP、社会支持。多年来,我一直在学习如何制作一个简单的动画气泡图来滑动的教程。这是我的代码:

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

它确实向我显示了一个气泡图,我可以滑动这些年,但是当我滑动这些年时,值(气泡图)不会改变。当我将鼠标悬停在气泡上时,它仍然显示 2015 年的值,例如,当我滑到 2019 年时。

有人可以告诉我我在代码中做错了什么吗?

太感谢了!

标签: pythonplotly

解决方案


我没有你的问题的数据,所以我从这里创建了数据。在右侧菜单 [Chapter 2 Online Data Expanded with Trust and Governance] ( https://s3.amazonaws.com/happiness-report/2015/Chapter2OnlineData_Expanded-with-Trust-and-Governance.xlsx ) 来自工作表名称: [Chapter2OnlineData_Expanded-wit] 已处理。下次您将数据与数据一起发布时,您会更快地得到答案。

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

在此处输入图像描述


推荐阅读