Skip to content

Instantly share code, notes, and snippets.

@pfandzelter
Created February 4, 2025 09:29
Show Gist options
  • Save pfandzelter/14d86ad40b18ecdc4ea44643eb996e2a to your computer and use it in GitHub Desktop.
Save pfandzelter/14d86ad40b18ecdc4ea44643eb996e2a to your computer and use it in GitHub Desktop.
Seaborn eCDF Plot with Different Line Styles
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The [empirical cumulative distribution function (eCDF) plot](https://en.wikipedia.org/wiki/Empirical_distribution_function) is useful to show the distribution of measured values.\n",
"Seaborn includes a nice [`ecdfplot`](https://seaborn.pydata.org/generated/seaborn.ecdfplot.html) function that allows us to build these plots easily, including different line colors for a categorical variable.\n",
"Unfortunately, the `ecdfplot` function does not allow us to use different line _styles_, making it difficult to produce a plot that can be easily read for color-blind folks or in black-and-white print."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see this in action using `seaborn` and the sample `pinguins` dataset."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# import the seaborn library\n",
"import seaborn as sns\n",
"\n",
"# we need the pyplot module from matplotlib as a helper\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# set a proper theme\n",
"sns.set_theme(style=\"whitegrid\")\n",
"\n",
"# load the sample dataset\n",
"penguins = sns.load_dataset(\"penguins\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, consider this sample plot produced with the default `ecdfplot` function."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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AABgaYQdAABgaYQdAABgaYQdAABgabYPO3PnzpWbb77Z/bVeT0pK8nl566233Me9+OKLZg2gM888U2688Uaz6rNd20x999135jbda6xbt25moUjPfcwKCwtl1qxZ0rVrV2nfvr3ceeed8uOPP4pd20vXibrmmmtMe/3jH/+Qd955p9h+b7qeVJcuXcwxw4YNMwtsWpVu+aLra1100UVm4dAbbrhBNmzY4L7/008/NWtt6cKiurbWu+++a+v28qfNXHTFef2Z03XL7NxmZbXXkiVLzM+itpUuajtv3jyzDpzLoUOHTBvpWnCdO3c2befazNqubbZo0SLTVmeccYb07t3btGHYvsecNvbCCy84k5OTnf369XPfdujQIef+/fvdl3379jlvvPFGZ+/evZ3Hjh0zx7zxxhvOM8880/n22287t23b5hwxYoSzc+fOzgMHDjjt2GYHDx403/+4ceOcGRkZzjVr1ji7dOninDRpkvuYp59+2nnuuec6P/zwQ+eWLVucd9xxh7NHjx7OnJwcp93aa8OGDc6kpCTn+PHjndu3b3e+8847zg4dOjjffPNN9zGjR492XnbZZc7169c7N23a5LzyyiudN910k9Oqbr/9dmefPn3M97tz507no48+an7GduzYYdrojDPOcE6fPt1cf/bZZ53t2rVzfvLJJ7Ztr7LazEXbq3v37s5TTz3V+eOPP3o93m5tVlp76Wf5aaed5nz55Zedu3fvdr777rvOs88+23xuuejP8DXXXOP89ttvzXvvkksucY4cOdJpZbeX0mbaVnp96dKlzh9++MH5yiuvONu2bet8//33w/I9Zsuw88svvzgHDhzobN++vbNnz55ev4iKWrRokfP000/3+gDRX9KTJ092f52Xl+e8+OKLnc8884zTjm2mb279MD169Kj7tieeeML8kCgNNPrL/MUXX3Tff/jwYfODsmzZMqfd2uuee+5xXnfddV7Hz54923x4uh6rAWn16tXu+/WDRtt448aNTqvRgKzfm4ZAl8LCQvMhOXPmTOfDDz/svPbaa70e8+CDD5rAbMf28qfNlH4e6fvvqquuKhZ27NZmZbXX9ddf7xwzZozXY1JTU83nutI20cdreHT5+OOPzR8t2pZWlFFGm82fP9/5/PPPez2mb9++zpSUlLB8j9lyGEuHXGJjY2Xp0qWmW7wk2t02c+ZM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9ddfl0suuUQ6dOhgNkTcunWr13Praz744INmU9OzzjrLHLN582b3/ToEpeekG+fqRop6zJIlSwL+Xjds2CD9+vUzz6OvqcNMBw8edN+v7aDBbtOmTfKvf/3LDOvp+esmtJ72798vQ4cONc+hbTBu3DjTJq520u9dN4vUS9Ghq507d0r//v3NOeimklOnTjWb3paHPr++pm54qhvr6nPdeeed8ttvv5n20Y11tc1vu+02r2G8QB8H2A1hB7AYDTcXX3yxNGjQQF555RW59tpry3zM4sWLZePGjfLkk0/KsGHD5KOPPpKBAwd6FeRu2bLFBADdwVh3HT906JAJGhoUlIaM66+/Xr777juz+/G0adOksLDQ1A7t2LHD6/Wefvpp80t58uTJJiAEYv369eaXeHx8vMycOVP+7//+z4QRHbbLzs52H6fnMGTIENPLNW/ePDn77LPN63788cfm/tzcXBPK9PvX59A20BCXlpbmfo5HHnnEhCa9aJuedtpp7vv0+HPOOUeeeeYZ+fvf/252gX755ZfL/f2888478umnn8rjjz8uY8aMMde1fRcuXGhC3Pjx401o03+D8TjATmJCfQIAgkt/IderV0/i4uKkffv2puehLFFRUaa3pWbNmuZrffygQYNMILjooovMbUePHjW/0Dt27Gi+PvPMM+Wyyy4zv1SHDx9u6oS0N+ill16Spk2bmmP0sRoynnrqKZk1a5b79TQUXHPNNRX6PjVMnXTSSTJ37lyJjo42t2nPRu/evU2vhoYspYFN65Suu+4687UGk/fff19Wr15tekOWLl1q2kgfc/rpp5tjzjvvPPO9ubRp00Zq1KhhrmubetJwpc/vetzKlSvls88+M4GjPLQ3SINq7dq1zdcrVqww7a/P17x5c3Ob1mG9/fbbQXkcYCf07AAwwzWuoOP6OiYmxvSeuDRr1swddJTWBOkQiesY7VFo27atqRHSX8B60RClgeeTTz7xej09riKysrJMb4X2YGmYcb2e/nJv3bq1/O9///M6Xs/TRUOghrnMzEzztQYTfZwr6CgNNjrc5Q/PNqlWrZoJekeOHCn396Tn7Qosqn79+lK3bl13YFF16tQxoTMYjwPshJ4dAMWKmDWk6C/Mw4cPl3iMOuGEE8ywldJend27d3sN8RQNKC6JiYkVOl8NEzo8pUNGeinK4XB4fa1DXUW/P9cQnQ7H6fdRlK/bfElISCjxucvD1XPkyZ92CvRxgJ0QdgCYX/ieCgoKzG3aA1LSMUoLYV2hQHuGtMBXi5t90R6VYKlevbrpRdGaHR22KiuAlEZDXEZGRrHbDxw4UOHzBBAeGMYCIGvWrDGFup4L6OmwkC5I6KKBwLPQeN++ffLll1+6j9Ggs2vXLlNHo7OeXBetFdFZXK66mmDQ3gytTdJaG8/XOuWUU0zxc3kW+tPz1plKWoDtogXOrgJmzx4bAJGJn14AZrG8e+65x8zC0plEY8eONcW7Og3dRYdm7r77blm+fLn897//lQEDBphaEZ3+rLSXRYeW9F89Rmt4dFbWokWLTAAKNp3ivnbtWvfssQ8++MCck75uSUNpvvTp08fUvWhBtgazDz/8UO666y7Ts6O9Ry61atUyYU6f33N4D0D4YxgLgBkK0l/mOkVb6z2uuuoqs+6MpyZNmsgdd9xh1uPR+pvzzz9f5syZY4pfXcNBGpR0llRKSork5ORIq1atzJRof6a/l9eFF15o1svRmUiDBw+W2NhYE3J0VlnRGVOl0UJsfR49Tz1v/fqKK64w35eGGxed3fXtt9+aKfM63VwLtAFEhmpOdrYDbE1nXulQzsSJE0s8RhcV1DVstPfEarZt22aGw3r06OHVk6MBrVGjRmytAVgAPTsAQkqLocv6m0tDSDBrfjzpFPQHHnhAbrzxRrPisJ6PDsNpL46uHxQo/Z70ucqi35dnyAIQfIQdACGlAePnn38u9RjtedLan8qgCxHqCsw6lPXWW2+ZkKLFz88++6xZJDBQb775pjz00ENlHqeLMnrWRgEIPoaxAIRUenq610ywkqaan3zyyRJJdKq+P/tRafG2r7VyAAQPYQcAAFgaU88BAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIBY2f8HLBulNXlRvB8AAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.ecdfplot(data=penguins, x=\"flipper_length_mm\", hue=\"species\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This looks good but is not well-suited for black-and-white.\n",
"We can make our plot have different line styles by plotting each line separately."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"# define the linestyles we want, should be at least as long as the number of species\n",
"linestyles = ['-', '--', ':', '-.']\n",
"\n",
"# specify the colors we want to use\n",
"colors = sns.color_palette(\"tab10\")\n",
"\n",
"# generate a new subplot\n",
"_, ax = plt.subplots()\n",
"\n",
"# enumerate the species types (our categories) and their corresponding colors\n",
"for i, (species, color) in enumerate(zip(penguins.species.unique(), colors)):\n",
" # plot each line separately\n",
" sns.ecdfplot(data=penguins[penguins.species == species], x=\"flipper_length_mm\", color=color, linestyle=linestyles[i], ax=ax, label=species)\n",
"\n",
"# finally, add a legend\n",
"ax.legend(title=\"species\")\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment