2016-09-30 2 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. См. Следующие данные: 1, 2.

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