Scatterplot with legend

All of the scatterplot legend examples that I can find on the web use
multiple calls to plt.scatter to then obtain a legend for each color, e.g.

However, I'm trying to make a single call to scatter, using a
ListedColorMap with three colors and passing c=(array of 0, 1, or 2) to the
plt.scatter call. Unfortunately, when I try to add a legend to this I get a
single point/value.

I tried to follow the proxy patch instructions here:

but couldn't get a circle when using patches.Circle() as the proxy object:
I still get a rectangular fill patch as in the examples above.

For completeness, two alternative examples:



import numpy as np
from matplotib import pyplot as plt, patches, color

x = np.random.rand(50)
y = np.random.rand(50)
color = np.random.randint(3, size=50)

colormap = colors.ListedColormap([(1, 0, 0),
                                    (0, 0, 1),
                                    (0, 1, 0)])

pointtypes = np.array(['type 0', 'type 1', 'type 2'])

plt.scatter(x, y, c=color, cmap=colormap)

plt.scatter(x, y, c=color, cmap=colormap)
proxy_artists = [patches.Circle((0, 1), color=colormap(i),
                         for i in range(3)]
plt.legend(proxy_artists, pointtypes)


Can anyone suggest a simple modification to obtain the above plot with the
right legend?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>