2011-03-30 32 views
5

Tengo una matriz Nx3 en scipy/numpy y me gustaría hacer un gráfico de barras tridimensional, donde los ejes X e Y están determinados por los valores de first y segundas columnas de la matriz, la altura de cada barra es la tercera columna en la matriz, y el número de barras está determinada por N.trazado de histograma 3d/gráfico de barras en python matplotlib

en otras palabras, si "datos" es la matriz a continuación:

data[:, 0] # values of X-axis 
data[:, 1] # values of Y-axis 
data[:, 2] # values of each Z-axis bar 

y debe haber una barra para cada len (datos)

¿Cómo puedo hacer esto en Matplot? lib?

En segundo lugar, como una variante de esto, ¿cómo puedo hacer lo mismo, pero esta vez histograma las barras en N contenedores en cada dimensión X, Y, Z? Es decir. en lugar de una barra para cada punto, simplemente histograma los datos en esos contenedores en cada dimensión, y grafica una barra para cada contenedor.

muchas gracias por su ayuda.

Respuesta

4

Here is one example de un diagrama de barras en 3D. Here is another.

Numpy tiene una función llamada histogram2d para hacer la agrupación rectangular que desee.

+0

¿Cómo puedo etiquetar los ejes x, y y z? – user248237dfsf

+0

Además, cuando uso ax.scatter para hacer un diagrama de dispersión en 3D, traza automáticamente algunos puntos con una transparencia alfa: ¿cómo puedo eliminar eso y trazar todos los puntos sin transparencia? – user248237dfsf

1

Me costó un poco definir las "alturas" de mis datos correctamente a partir de los ejemplos, pero finalmente conseguí que funcionara con el siguiente código. Aquí, Z es una matriz tridimensional con todos mis datos, y x y rval son básicamente los índices 2-d correspondientes a los puntos de datos.

xs = np.arange(biopsy_num) 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
for y in (np.arange(r_sweep)): 
    z = Z[:,y] 
    ax.bar(xs, z, zs=y, zdir='y', alpha=0.8) 

ax.set_xlabel('biopsies') 
ax.set_ylabel('radius of biopsy') 
ax.set_zlabel('Shannon Index') 

plt.show() 
Cuestiones relacionadas