color bar python 3d matplotlib scatter-plot

python - Diagrama de dispersión 3D de Matplotlib con Colorbar



matplotlib scatter color by value (1)

Tomando prestado el example en la página de documentación de Matplotlib y modificando ligeramente el código,

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

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


Esto produce una barra de colores (aunque posiblemente no la que necesitas):

Reemplace esta línea:

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

con

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

entonces usa

fig.colorbar(p)

cerca del final