I have loaded a picture into a numpy array using mahotas.
import mahotas
img = mahotas.imread(\'test.jpg\')
Each pixel in img
Yes, you can do this, but it needs to be done through a separate mechanism than the c argument. In a nutshell, use facecolors=rgb_array.
First off, let me explain what's going on. The Collection that scatter returns has two "systems" (for lack of a better term) for setting colors.
If you use the c argument, you're setting the colors through the ScalarMappable "system". This specifies that the colors should be controlled by applying a colormap to a single variable. (This is the set_array method of anything that inherits from ScalarMappable.)
In addition to the ScalarMappable system, the colors of a collection can be set independently. In that case, you'd use the facecolors kwarg.
As a quick example, these points will have randomly specified rgb colors:
import matplotlib.pyplot as plt
import numpy as np
x, y = np.random.random((2, 10))
rgb = np.random.random((10, 3))
fig, ax = plt.subplots()
ax.scatter(x, y, s=200, facecolors=rgb)
plt.show()
