2015-10-22 151 views
2

我有一个使用matplotlib创建的3D图,并且我有一个与每个点对应的rbg值列表。指定散点图中每个点的颜色(matplotlib)

我有X,Y,和Z的数据,然后我有以下形式的 “颜色列表”:

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

到每个(X,Y,Z)点相匹配。

现在,我有

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

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

什么是纳入这些RGB元组,使每个点将被分配一个特定的颜色适当的方式吗?

回答

5

我用一个for循环为每个点单独分配每种颜色。这是我的代码:

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() 

for环推移逐点(因此在每个X,Y,Z值的前面的[i]),并给出一个颜色之一。我为我的例子使用了十六进制颜色,但如果您想要,也可以使用其他的东西。

3

如果您不想使用for循环(对于大型列表可能会很慢)您可以按照原样对RGB颜色列表使用scatter命令,但需要将颜色指定为RGB(或RGBA)值0和1之间

X = [0, 1, 2] 
Y = [0, 1, 2] 
Z = [0, 1, 2] 
C = np.array([[255, 0, 0], [0, 255, 0], [0, 0, 255]]) 
fig = plt.figure() 
ax = fig.add_subplot(111, projection = '3d') 

ax.scatter(X, Y, Z, c = C/255.0) 
plt.show() 

3 colored points

+0

颜色可以被指定为一个十六进制字符串? –

相关问题