Skip to content

JosephBARBIERDARNAL/pypalettes

Repository files navigation

PyPalettes

pypalettes logo

A large (+2500) collection of color maps for Python.

This package is based on the R package paletteer, and all associated sub-packages (with original palettes) mentioned in the LICENSE file.



Installation

Note: pypalettes requires Python 3.9 or above.

You can install pypalettes directly from PyPI with:

pip install -U pypalettes



Quick start

Once pypalettes is imported, all the palettes are now accessible as any other colormap in matplotlib or seaborn via the palette or cmap arguments.

Categorical palette

import matplotlib.pyplot as plt
import seaborn as sns
import pypalettes

df = sns.load_dataset("penguins")

g = sns.lmplot(
    data=df, x="bill_length_mm", y="bill_depth_mm", hue="species", palette="Fun"
)
g.set_axis_labels("Snoot length", "Snoot depth")
plt.show()

scatterplot example

Continuous palette

Note: the suffix _gradient is used to make the colormap a gradient.

import matplotlib.pyplot as plt
import pypalettes
import numpy as np

data = np.random.randn(20, 20)

plt.imshow(data, cmap="Sunset2_gradient")
plt.colorbar()
plt.show()

heatmap example

Your own palette

import matplotlib.pyplot as plt
from pypalettes import add_cmap
import numpy as np

add_cmap(
    colors=["#D57A6DFF", "#E8B762FF", "#9CCDDFFF", "#525052FF"],
    name="myOwnCmap",
    cmap_type="continuous",
)

x = np.linspace(0, 20, 1000)
y = np.sin(x)

plt.scatter(x, y, c=y, cmap="myOwnCmap")
plt.colorbar()
plt.show()

linechart example

Going further



Features

  • Add +2500 native palettes to matplotlib and seaborn
  • Load, customise and combine +2500 palettes
  • Create your own palettes

To find out more about using PyPalettes, use this PyPalettes guide.



Chart made with pypalettes

Click on the image to get the associated code!

choropleth map of europe stacked area chart of natural disasters
gapminder bubble chart lollipop chart with colormap and arrow



Acknowledgements

PyPalettes is highly inspired (and relies on for the first one) from

A big thanks to Yan Holtz for:



Contributing

Since the core code of the library is currently quite short and simple, it does not require any major changes. However, if you have a good idea or suggestion, please open an issue.

That said, adding more palettes is an easy way to make pypalettes better! Here’s the best way to get started:

First, open your code editor and navigate to parsers/list_manual_palettes.py. You’ll find a dictionary of manually defined palettes. Add yours at the end with the following elements:

  • "name": the name of your palette
  • "palette": the colors of your palette in the following format: ["['#123456', '#654321', '#162534']"]
  • "source": Where does your palette come from? If you created it, your name or a link to your portfolio is valid!
  • "kind": the type of palette. View examples here
  • "paletteer-kind": just put "unknown"

Then, run:

python parsers/main.py

For a large number of palettes, please open an issue first.