Matplotlib 3D scatter plot with color gradient Matplotlib 3D scatter plot with color gradient python python

Matplotlib 3D scatter plot with color gradient


Here is an example for 3d scatter with gradient colors:

import matplotlib.cm as cmxfrom mpl_toolkits.mplot3d import Axes3Ddef scatter3d(x,y,z, cs, colorsMap='jet'):    cm = plt.get_cmap(colorsMap)    cNorm = matplotlib.colors.Normalize(vmin=min(cs), vmax=max(cs))    scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=cm)    fig = plt.figure()    ax = Axes3D(fig)    ax.scatter(x, y, z, c=scalarMap.to_rgba(cs))    scalarMap.set_array(cs)    fig.colorbar(scalarMap)    plt.show()

Of course, you can choose the scale to range between different values, like 0 and 1.


Following works: I can't figure out why yours doesn't. You should be able to set color as a sequence of RGBA floats, or just sequence of floats.

# Create Mapcm = plt.get_cmap("RdYlGn")x = np.random.rand(30)y = np.random.rand(30)z = np.random.rand(30)col = np.arange(30)# 2D Plotfig = plt.figure()ax = fig.add_subplot(111)ax.scatter(x, y, s=10, c=col, marker='o')  # 3D Plotfig = plt.figure()ax3D = fig.add_subplot(111, projection='3d')p3d = ax3D.scatter(x, y, z, s=30, c=col, marker='o')                                                                                plt.show()

However, in help of scatter, I see the following, it may be related.

    A :class:`matplotlib.colors.Colormap` instance or registered    name. If *None*, defaults to rc ``image.cmap``. *cmap* is    only used if *c* is an array of floats.