matplotlib colorbar for scatter matplotlib colorbar for scatter python python

matplotlib colorbar for scatter


From the matplotlib docs on scatter 1:

cmap is only used if c is an array of floats

So colorlist needs to be a list of floats rather than a list of tuples as you have it now.plt.colorbar() wants a mappable object, like the CircleCollection that plt.scatter() returns.vmin and vmax can then control the limits of your colorbar. Things outside vmin/vmax get the colors of the endpoints.

How does this work for you?

import matplotlib.pyplot as pltcm = plt.cm.get_cmap('RdYlBu')xy = range(20)z = xysc = plt.scatter(xy, xy, c=z, vmin=0, vmax=20, s=35, cmap=cm)plt.colorbar(sc)plt.show()

Image Example


Here is the OOP way of adding a colorbar:

fig, ax = plt.subplots()im = ax.scatter(x, y, c=c)fig.colorbar(im, ax=ax)


If you're looking to scatter by two variables and color by the third, Altair can be a great choice.

Creating the dataset

import matplotlib.pyplot as pltimport numpy as npimport pandas as pddf = pd.DataFrame(40*np.random.randn(10, 3), columns=['A', 'B','C'])

Altair plot

from altair import *Chart(df).mark_circle().encode(x='A',y='B', color='C').configure_cell(width=200, height=150)

Plot

enter image description here