<div dir="ltr">For 2d scatter, I can pass 2d arrays as X and Y.  But it seems not c=.<div><br></div><div>Here is a demonstration:</div><div>------------</div><div>import matplotlib.pyplot as plt<br>import numpy as np<br>A = np.array<br><br>import colorcet as cc<br>cmap = cc.m_rainbow<br><br>x = A([[0,.25], [0.5, 0.75]])<br>y = x**2<br>colors = np.empty (x.shape, dtype=object)<br>for i in range(2):<br>    for j in range(2):<br>        colors[i,j] = cmap(x[i,j])<br>    <br>plt.scatter (x, y, c=colors.flatten())<br><div>--------------</div><div><br></div><div>Without colors.flatten(), mpl will give an error.  It seems to be OK with X and Y being 2D, but not c.</div><div>In this example I have given c as a 2d array of objects, each object being an RGBA tuple.</div><div><br></div><div>Is there an easier way?  Preferably one that doesn't require me to specifically allocate an empty array of objects</div><div>and then populate it with an explicit loop?</div><br></div></div>