Skip to main content

Bar Chart Race

PyPI - License

Make animated bar chart races in Python with matplotlib.

img

Official Documentation

Visit the bar_chart_race official documentation for detailed usage instructions.

Installation

Install with either:

  • pip install bar_chart_race
  • conda install -c conda-forge bar_chart_race

Quickstart

Must begin with a pandas DataFrame containing 'wide' data where:

  • Every row represents a single period of time
  • Each column holds the value for a particular category
  • The index contains the time component (optional)

The data below is an example of properly formatted data. It shows total deaths from COVID-19 for several countries by date.

img

Main function - bar_chart_race

There is one main function, bar_chart_race, which we use to recreate the above video. All parameters are shown with their default value except for filename and title.

import bar_chart_race as bcr
df = bcr.load_dataset('covid19_tutorial')
bcr.bar_chart_race(
    df=df,
    filename='covid19_horiz.mp4',
    orientation='h',
    sort='desc',
    n_bars=6,
    fixed_order=False,
    fixed_max=True,
    steps_per_period=10,
    interpolate_period=False,
    label_bars=True,
    bar_size=.95,
    period_label={'x': .99, 'y': .25, 'ha': 'right', 'va': 'center'},
    period_fmt='%B %d, %Y',
    period_summary_func=lambda v, r: {'x': .99, 'y': .18,
                                      's': f'Total deaths: {v.nlargest(6).sum():,.0f}',
                                      'ha': 'right', 'size': 8, 'family': 'Courier New'},
    perpendicular_bar_func='median',
    period_length=500,
    figsize=(5, 3),
    dpi=144,
    cmap='dark12',
    title='COVID-19 Deaths by Country',
    title_size='',
    bar_label_size=7,
    tick_label_size=7,
    shared_fontdict={'family' : 'Helvetica', 'color' : '.1'},
    scale='linear',
    writer=None,
    fig=None,
    bar_kwargs={'alpha': .7},
    filter_column_colors=False)  

Save animation to disk or return HTML

Leave the filename parameter as None to return the animation as HTML. If you are running a Jupyter Notebook, it will automatically be embedded into it.

bcr.bar_chart_race(df=df, filename=None)

img

Customization

There are many options to customize the bar chart race to get the animation you desire. Below, we have an animation where the maximum x-value and order of the bars are set for the entire duration. A custom summary label and perpendicular bar of median is also added.

def period_summary(values, ranks):
    top2 = values.nlargest(2)
    leader = top2.index[0]
    lead = top2.iloc[0] - top2.iloc[1]
    s = f'{leader} by {lead:.0f}'
    return {'s': s, 'x': .95, 'y': .07, 'ha': 'right', 'size': 8}

bcr.bar_chart_race(df_baseball, period_length=1000,
                   fixed_max=True, fixed_order=True, n_bars=10,
                   figsize=(5, 3), period_fmt='Season {x:,.0f}',
                   title='Top 10 Home Run Hitters by Season Played')

img

Metadata

Release files for bar-chart-race-fix 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bar-chart-race-fix 0.2.2
File Size Uploaded
bar_chart_race_fix-0.2.2.tar.gz 154.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bar-chart-race-fix 0.2.2
File Interpreter ABI Platform
bar_chart_race_fix-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 311.8 kB

Release files / bar_chart_race_fix-0.2.2.tar.gz

Download URL bar_chart_race_fix-0.2.2.tar.gz
Size 154.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ba3b7540c7071d25bbe3fe121abe67bd4f020ff3e9f50f6d7b96dcd64d8a115d
BLAKE2b-256 checksum
How to use checksums
9b5ebad761ed595d66acf191644aa93ca481fc434cbf5e99b70092c3941db3bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / bar_chart_race_fix-0.2.2-py3-none-any.whl

Download URL bar_chart_race_fix-0.2.2-py3-none-any.whl
Size 156.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
14de7f396c4f206625d50819b25c142fca26372c6c9876cba29384e7c289bb63
BLAKE2b-256 checksum
How to use checksums
94721fd8484ecfca5cf7ec0be56f56de8932454332e3af72526bb6680952a4f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page