Search code examples
pythonmatplotlibcolorsscatter-plotmatplotlib-3d

Specify color of each point in 3d scatter plot


I have a 3D Plot that I created using matplotlib, and I have a list of rbg values that correspond to each point.

I have the X, Y, and Z data, and then I have a "color list" of the form:

[ (r,g,b), (r,g,b), ... , (r,g,b) ]

to match each (x, y, z) point.

Right now, I have

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')

ax.scatter(X, Y, Z)
plt.show()

What's the appropriate way to incorporate those rgb tuples so that each point will be assigned a specific color?


Solution

  • I used a for loop to individually assign each color to each point. Here is my code:

    X = [1, 2, 3]
    Y = [2, 5, 8]
    Z = [6, 4, 5]
    colors=["#0000FF", "#00FF00", "#FF0066"]
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection = '3d')
    
    
    for i in range(len(X)):
        ax.scatter(X[i], Y[i], Z[i], color=colors[i])
    plt.show()
    

    The for loop goes point by point (hence the [i] in front of each X,Y,Z value) and gives a color one by one. I used hex colors for my example, but you could probably use something else if you wanted.