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

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
"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
Upload Data
Drag & drop your Excel or CSV file. Plotivy securely processes it in your browser.
AI Generation
Our AI analyzes your data and generates the Bump Chart code automatically.
Customize & Export
Tweak the design with natural language, then export as high-res PNG, SVG or PDF.
Python Code Example
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
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
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.