How to Create a Bar Chart Race: Complete Guide (2026)

What Is a Bar Chart Race?

A bar chart race is an animated horizontal bar chart that shows how rankings change over time. The bars dynamically grow, shrink, and reorder as they compete for position, creating a compelling visual narrative that makes temporal data instantly engaging.

You have likely seen bar chart races showing GDP rankings, population growth, or YouTube subscriber counts. Their viral appeal comes from gamifying data—viewers naturally root for their favorite bar to climb the rankings.

Best Tools for Creating Bar Chart Races

Here are the three most popular approaches, ranked by ease of use:

Tool Skill Level Cost Best For
Flourish Beginner Free (with watermark) Quick creation, no coding
Python (bar_chart_race) Intermediate Free Custom styling, automation
Excel + PowerPoint Advanced Microsoft 365 Corporate environments

Method 1: Flourish (Easiest)

Flourish is the fastest way to create a professional bar chart race with zero coding.

Step 1: Prepare Your Data

Format your spreadsheet with:

  • Column A: Category names (countries, companies, etc.)
  • Columns B onward: Time periods as headers (2010, 2011, 2012…)
  • Values: Numeric data for each category at each time point

Step 2: Create in Flourish

  1. Go to flourish.studio and sign up (free)
  2. Click New visualization → search Bar chart race
  3. Select the template and click Create visualization
  4. In the Data tab, paste or upload your spreadsheet
  5. Map your columns: Label, Values, and optionally Image/Color

Step 3: Customize

  • Preview tab: Adjust animation speed, number of bars shown, and timing
  • Colors: Set custom colors per category or use a palette
  • Labels: Format numbers (currency, percentages, abbreviations)

Step 4: Export

Click Export & publish. Free accounts get an embed link. Paid plans ($69/month) allow MP4 video download without watermark.

Method 2: Python (Most Flexible)

For custom styling or batch processing, use the bar_chart_race Python library.

Installation

pip install bar_chart_race pandas

Basic Example

import bar_chart_race as bcr
import pandas as pd

# Load your data (rows = time periods, columns = categories)
df = pd.read_csv("your_data.csv", index_col=0)

# Create the animation
bcr.bar_chart_race(
    df=df,
    filename="race.mp4",
    title="My Bar Chart Race",
    n_bars=10,
    period_length=500,
    steps_per_period=20,
    figsize=(6, 3.5),
    cmap="dark12"
)

Key Parameters

  • n_bars: Number of bars visible at once (default: 10)
  • period_length: Milliseconds per time period (default: 500)
  • steps_per_period: Animation smoothness (default: 10)
  • cmap: Color palette (dark12, tab20, or custom dict)
  • period_fmt: Format the time label (e.g., "{x:.0f}")

Advanced: Custom Colors and Images

# Custom colors per category
colors = {
    "USA": "#3C3B6E",
    "China": "#DE2910",
    "Japan": "#BC002D"
}

bcr.bar_chart_race(
    df=df,
    filename="race.mp4",
    colors=colors,
    bar_label_size=7,
    tick_label_size=7,
    period_label={"x": 0.95, "y": 0.15, "ha": "right", "size": 24}
)

Method 3: Excel + PowerPoint (Manual)

This method works without additional software but requires manual animation setup.

Step 1: Create a Sorted Bar Chart in Excel

  1. Create a horizontal bar chart for your first time period
  2. Sort data descending by value
  3. Remove gridlines and simplify styling

Step 2: Duplicate for Each Time Period

  1. Create a separate chart for each time period
  2. Re-sort bars by the new values
  3. Copy each chart into PowerPoint as a separate slide

Step 3: Animate with Morph Transitions

  1. In PowerPoint, select all slides
  2. Go to TransitionsMorph
  3. Set duration to 0.5-1 second per slide
  4. Export as video: FileExportCreate a Video

Limitations: This method is time-consuming for many time periods and does not produce as smooth animations as Flourish or Python.

Design Tips for Engaging Bar Chart Races

1. Limit Visible Bars

Show 8-12 bars maximum. Too many bars create visual clutter and reduce impact.

2. Use Meaningful Colors

Assign consistent colors that viewers associate with each category:

  • Countries → Flag colors
  • Brands → Brand colors
  • Political data → Party colors

3. Add Context

  • Include a large, visible year/date counter
  • Add a title that explains what is being measured
  • Consider annotations for major events

4. Optimize Timing

  • Social media: 30-60 seconds total, faster transitions
  • Presentations: 1-2 minutes, slower for audience to follow
  • Pause at key moments: Add holds when rankings dramatically shift

5. Add Audio (Optional)

Background music or voiceover narration significantly increases engagement. Export video then add audio in a video editor.

When to Use Bar Chart Races

Great Use Cases

  • Rankings over time: Market share, population, revenue
  • Competition narratives: Sports stats, brand battles
  • Historical trends: Showing decades of change in seconds
  • Social media content: Highly shareable and engaging

When to Avoid

  • Stable data: If rankings rarely change, the animation is boring
  • Too few time periods: Need at least 5-10 data points for smooth animation
  • Precise analysis: Static charts are better for detailed comparisons
  • Print/PDF: Animation cannot be reproduced in static formats

Conclusion

Bar chart races transform boring spreadsheets into viral-worthy content. For most people, Flourish offers the best balance of ease and quality. Developers and data scientists should explore Python for full customization. The Excel method works in a pinch but is not recommended for complex projects.

Ready to create stunning animated data visualizations? Contact Significant Figures for professional bar chart race production with custom branding, voiceover, and platform-optimized exports.