2011-03-31 42 views
16

préstamos del example en la página de documentación Matplotlib y modificando ligeramente el código,Matplotlib 3D Dispersión con de Colorbar

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() 
ax = fig.add_subplot(111, projection='3d') 
n = 100 
for c, m, zl, zh in [('r', 'o', -50, -25), ('b', '^', -30, -5)]: 
    xs = randrange(n, 23, 32) 
    ys = randrange(n, 0, 100) 
    zs = randrange(n, zl, zh) 
    cs = randrange(n, 0, 100) 
    ax.scatter(xs, ys, zs, c=cs, marker=m) 
ax.set_xlabel('X Label') 
ax.set_ylabel('Y Label') 
ax.set_zlabel('Z Label') 

plt.show() 

dará una trama 3D de dispersión con diferentes colores para cada punto (colores aleatorios en este ejemplo) . ¿Cuál es la forma correcta de agregar una barra de color a la figura, ya que al agregar en plt.colorbar() o ax.colorbar() parece que no funciona?

Respuesta

14

Esto produce una barra de colores (aunque posiblemente no el que necesita):

Reemplazar esta línea:

ax.scatter(xs, ys, zs, c=cs, marker=m) 

con

p = ax.scatter(xs, ys, zs, c=cs, marker=m) 

a continuación, utilizar

fig.colorbar(p) 

cerca de th e finaliza

Cuestiones relacionadas