2016-09-30 59 views
0

我目前在三維圖中散射點。我的X,Y和Z是列表(len(Z)= R)。不過,我想根據他們的Z值給他們一個顏色。例如,如果Z> 1,顏色將是紅色,Z> 2藍色Z> 3粉紅色等。我目前的代碼是:基於Matplotlib3D顏色的Z軸上的點值

from mpl_toolkits.mplot3d import axes3d 
import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.scatter(X,Y,Z,for k in range (R): if Z>1: color=['red']) 
plt.show() 
+0

什麼''X,Y,Z''?他們沒有定義,你只需要傳遞一個數組作爲顏色 – nicoguaro

回答

1

如果你看到圖庫,你會找到答案。你需要傳遞一個數組到c=colors。看到這些:12

import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 

def randrange(n, vmin, vmax): 
    return (vmax - vmin)*np.random.rand(n) + vmin 


fig = plt.figure(figsize=(8,5)) 
ax = fig.add_subplot(111, projection='3d') 
n = 100 
xs = randrange(n, 23, 32) 
ys = randrange(n, 0, 100) 
zs = randrange(n, 0, 50) 
scat = ax.scatter(xs, ys, zs, c=zs, marker="o", cmap="viridis") 
plt.colorbar(scat) 

ax.set_xlabel('X Label') 
ax.set_ylabel('Y Label') 
ax.set_zlabel('Z Label') 
plt.show() 

enter image description here