Menu

Time Series
Static
33 Python scripts generated for bump chart this week

Bump Chart

Chart overview

A bump chart replaces raw values with ranks on the y-axis (rank 1 at top), draws a smoothed line for each entity across time, and makes rank inversions - where one item overtakes another - the central visual story.

Key points

  • Researchers use it to track journal citation rankings, species abundance rankings across survey years, or country performance indices across study waves.
  • It communicates competitive dynamics and volatility that raw trend lines obscure.

Example Visualization

Bump chart with rank on inverted y-axis and time on x-axis, coloured lines for each entity crossing and weaving as rankings change across time points

Create This Chart Now

Generate publication-ready bump charts with AI in seconds. No coding required – just describe your data and let AI do the work.

View example prompt
Example AI Prompt

"Create a bump chart from my ranking data. Invert the y-axis so rank 1 is at top, draw smoothed S-curve lines for each entity, label each line at the first and last time point, use a distinct colour per entity, and format as a publication-quality figure."

How to create this chart in 30 seconds

1

Upload Data

Drag & drop your Excel or CSV file. Plotivy securely processes it in your browser.

2

AI Generation

Our AI analyzes your data and generates the Bump Chart code automatically.

3

Customize & Export

Tweak the design with natural language, then export as high-res PNG, SVG or PDF.

Python Code Example

example.py
import numpy as np
import matplotlib.pyplot as plt

years = [2020, 2021, 2022, 2023]
rank_a = [3, 2, 1, 2]
rank_b = [1, 3, 2, 1]
rank_c = [2, 1, 3, 3]

plt.figure(figsize=(10, 6))
plt.plot(years, rank_a, 'o-', linewidth=3, markersize=12, label='Product A')
plt.plot(years, rank_b, 's-', linewidth=3, markersize=12, label='Product B')
plt.plot(years, rank_c, '^-', linewidth=3, markersize=12, label='Product C')

plt.gca().invert_yaxis()
plt.yticks([1, 2, 3])
plt.xticks(years, fontweight='bold')
plt.title('Bump Chart (Rankings Evolution)', fontsize=14, fontweight='bold', pad=20)
plt.ylabel('Rank', fontsize=12)
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('plotivy-bump-chart.png', dpi=150)
print("Bump chart generated successfully.")

Opens the Analyze page with this code pre-loaded and ready to execute

Console Output

Output
Bump chart generated successfully.

Common Use Cases

  • 1Tracking journal or conference ranking changes across assessment years
  • 2Monitoring species abundance rank shifts across annual biodiversity surveys
  • 3Comparing country performance rank changes in international health indices
  • 4Visualising athlete or team league position changes across a competition season

Pro Tips

Use sigmoid-interpolated (S-curve) line segments between time points for a cleaner look

Label entity names directly at the leftmost and rightmost time points to avoid a legend

Invert the y-axis and label it explicitly so rank 1 clearly means top performer

Limit to around 10-15 entities maximum before the chart becomes too cluttered

Free Cheat Sheet

Scientific Chart Selection Cheat Sheet

Not sure whether to use a Violin Plot, Box Plot, or Ridge Plot? Download our single-page reference mapping the most-used scientific chart types, exactly when to use them, and the core Matplotlib/Seaborn functions.

Comparison Charts
Distribution Charts
Time Series Data
Common Mistakes
No spam. Unsubscribe anytime.