Sebastian ten Berge
Sebastian ten Berge

Reputation: 137

python plotly (px) animation frame date is in wrong order

With plotly express I've built a bar chart similar to as shown on their website.

As px.bar did not allow me to run the animation frame on datetime64[ns] I transformed the datetime into a string as follows.

eu_vaccine_df['date_str'] = eu_vaccine_df['date'].apply(lambda x: str(x))
eu_vaccine_df[['date_str', 'date', 'country', 'people_vaccinated_per_hundred']].head()

The dataset on which I then run the px.bar looks as follows and contains 30 different countries.

dataframe

The code for my barchart including animation looks as follows.

fig = px.bar(
  eu_vaccine_df,
  x='country', y='people_vaccinated_per_hundred',
  color='country',
  animation_frame='date_str',
  animation_group='country',
  hover_name='country',
  range_y=[0,50],
  range_x=[0,30]
)
fig.update_layout(
  template='plotly_dark',
  margin=dict(r=10, t=25, b=40, l=60)
)
fig.show()

In the end result the date on the animation frame is wrong. It first shows all results from 2021 and then all results from 2020 as shown at the bottom of the following screenshot. wrong order of the years

Upvotes: 1

Views: 2702

Answers (1)

Sebastian ten Berge
Sebastian ten Berge

Reputation: 137

Sorting my df by the date solved the issue.

  covid_df['date'] = pd.to_datetime(covid_df['date'])
  covid_df = covid_df.sort_values('date', ascending=True)
  covid_df['date'] = covid_df['date'].dt.strftime('%m-%d-%Y')

Upvotes: 1

Related Questions