<!-- Automatically generated, uses README.qmd to modify README.md -->
# `bumplot`: easily create and customize bump charts in Python
<img src="https://github.com/JosephBARBIERDARNAL/static/blob/main/python-libs/bumplot/image.png?raw=true" alt="bumplot logo" align="right" width="180px"/>
`bumplot` is a small Python package made to facilitate the creation of
**bump charts** using matplotlib and Bézier curves. It has high
customization capabilities too!
Bump charts are useful when the focus is on comparing **relative
rankings**—who is ahead of whom—rather than the exact magnitude of the
differences.
Check out the [online
documentation](https://y-sunflower.github.io/bumplot/)
<br> <br>
## Get started
``` python
import matplotlib.pyplot as plt
import pandas as pd
from bumplot import bumplot
data = pd.DataFrame(
{
"x": [2020, 2021, 2022, 2023],
"A": [10, 50, 20, 80],
"B": [40, 30, 60, 10],
"C": [90, 20, 70, 40],
}
)
x = "x"
y_columns = ["A", "B", "C"]
fig, ax = plt.subplots(figsize=(8, 4))
bumplot(
x=x,
y_columns=y_columns,
data=data,
curve_force=0.5,
plot_kwargs={"lw": 4},
scatter_kwargs={"s": 150, "ec": "black", "lw": 2},
colors=["#ffbe0b", "#ff006e", "#3a86ff"],
)
ax.legend()
ax.spines[["top", "right", "left", "bottom"]].set_visible(False)
ax.grid(alpha=0.4)
```

[See more examples](https://y-sunflower.github.io/bumplot/examples/)
<br> <br>
## Installation
pip install bumplot
Raw data
{
"_id": null,
"home_page": null,
"name": "bumplot",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "bump, bump plot, bump charts, matplotlib, data, visualization",
"author": null,
"author_email": "Joseph Barbier <joseph.barbierdarnal@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/72/85/755014590f011d107dec566e541a0bd14de4faf2abed1536cd474a7818a7/bumplot-0.1.0.tar.gz",
"platform": null,
"description": "\n\n<!-- Automatically generated, uses README.qmd to modify README.md -->\n\n# `bumplot`: easily create and customize bump charts in Python\n\n<img src=\"https://github.com/JosephBARBIERDARNAL/static/blob/main/python-libs/bumplot/image.png?raw=true\" alt=\"bumplot logo\" align=\"right\" width=\"180px\"/>\n\n`bumplot` is a small Python package made to facilitate the creation of\n**bump charts** using matplotlib and B\u00e9zier curves. It has high\ncustomization capabilities too!\n\nBump charts are useful when the focus is on comparing **relative\nrankings**\u2014who is ahead of whom\u2014rather than the exact magnitude of the\ndifferences.\n\nCheck out the [online\ndocumentation](https://y-sunflower.github.io/bumplot/)\n\n<br> <br>\n\n## Get started\n\n``` python\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\nfrom bumplot import bumplot\n\ndata = pd.DataFrame(\n {\n \"x\": [2020, 2021, 2022, 2023],\n \"A\": [10, 50, 20, 80],\n \"B\": [40, 30, 60, 10],\n \"C\": [90, 20, 70, 40],\n }\n)\nx = \"x\"\ny_columns = [\"A\", \"B\", \"C\"]\n\nfig, ax = plt.subplots(figsize=(8, 4))\nbumplot(\n x=x,\n y_columns=y_columns,\n data=data,\n curve_force=0.5,\n plot_kwargs={\"lw\": 4},\n scatter_kwargs={\"s\": 150, \"ec\": \"black\", \"lw\": 2},\n colors=[\"#ffbe0b\", \"#ff006e\", \"#3a86ff\"],\n)\nax.legend()\nax.spines[[\"top\", \"right\", \"left\", \"bottom\"]].set_visible(False)\nax.grid(alpha=0.4)\n```\n\n\n\n[See more examples](https://y-sunflower.github.io/bumplot/examples/)\n\n<br> <br>\n\n## Installation\n\n pip install bumplot\n",
"bugtrack_url": null,
"license": null,
"summary": "Easily create and customize bump charts in Python",
"version": "0.1.0",
"project_urls": {
"Documentation": "https://y-sunflower.github.io/bumplot/",
"Homepage": "https://y-sunflower.github.io/bumplot/",
"Issues": "https://github.com/y-sunflower/bumplot/issues",
"Repository": "https://github.com/y-sunflower/bumplot"
},
"split_keywords": [
"bump",
" bump plot",
" bump charts",
" matplotlib",
" data",
" visualization"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6318827ee431a839a1bd14de4f37dfd181764e894d562e37aa36249a167c2930",
"md5": "d9679339915d01c71d4ab4554bf66efa",
"sha256": "88d8f1104ae25c6b31e1895ce75fb2235d8483db64977ef0265a611b6fca0cfe"
},
"downloads": -1,
"filename": "bumplot-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d9679339915d01c71d4ab4554bf66efa",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 5877,
"upload_time": "2025-08-24T14:08:09",
"upload_time_iso_8601": "2025-08-24T14:08:09.809850Z",
"url": "https://files.pythonhosted.org/packages/63/18/827ee431a839a1bd14de4f37dfd181764e894d562e37aa36249a167c2930/bumplot-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7285755014590f011d107dec566e541a0bd14de4faf2abed1536cd474a7818a7",
"md5": "a1885eb44b09c6c1651a99e8c4998239",
"sha256": "d7c62fb08476c068b81a7f5851aec77c64e0fb61e704d3c35b24b11ce22aa4fa"
},
"downloads": -1,
"filename": "bumplot-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "a1885eb44b09c6c1651a99e8c4998239",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 51372,
"upload_time": "2025-08-24T14:08:11",
"upload_time_iso_8601": "2025-08-24T14:08:11.151981Z",
"url": "https://files.pythonhosted.org/packages/72/85/755014590f011d107dec566e541a0bd14de4faf2abed1536cd474a7818a7/bumplot-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-24 14:08:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "y-sunflower",
"github_project": "bumplot",
"github_not_found": true,
"lcname": "bumplot"
}