Pregunta

Necesito trazar algunos datos en varias formas. Actualmente estoy usando Matplotlib y estoy bastante contento con las parcelas que puedo producir.

Esta pregunta es sobre cómo trazar la última. Los datos son similares a la & Quot; tabla de distancias & Quot ;, como esto (solo que más grande, mi tabla es 128x128 y todavía tiene 3 o más números por elemento).

Ahora, mis datos son mucho mejores " estructurados " que una tabla de distancia (mis datos no varían & "; aleatoriamente &"; como en una tabla de distancia ordenada alfabéticamente), por lo tanto, un 3D gráfico de barras , o tal vez 3 de ellos, sería perfecto. Tengo entendido que falta un gráfico de este tipo en Matplotlib.

Podría usar un Countor3d (coloreado) como estos o algo en 2D como imshow, pero no es realmente representativo de lo que son los datos (los datos tienen significado solo en mis 128 puntos, no hay nada entre dos puntos). Y la altura de las barras es más legible que el color, en mi opinión.

Por lo tanto, las preguntas:

  1. ¿es posible crear un gráfico de barras 3D en Matplotlib? Debe quedar claro que quiero decir con un dominio 2D, no solo un gráfico de barras 2D con un & "; Falso &"; Representación 3D con fines estéticos
  2. si la respuesta a la pregunta anterior es no, ¿hay alguna otra biblioteca capaz de hacerlo? Prefiero algo basado en Python, pero estoy de acuerdo con otras posibilidades compatibles con Linux
  3. si la respuesta a la pregunta anterior es no, ¿tiene alguna sugerencia sobre cómo mostrar esos datos? P.ej. crear una tabla con los valores, superpuestos a la imagen u otra forma coloreada?
¿Fue útil?

Solución

MyavaVi2 puede hacer gráficos de barras 3D (desplácese un poco hacia abajo). Una vez que tenga MayaVi / VTK / ETS / etc . instalado todo funciona a la perfección, pero puede ser un poco de trabajo tenerlo todo instalado. Ubuntu lo tiene todo empaquetado, pero son la única distribución de Linux que sé que tiene.

Otros consejos

Desde hace algún tiempo, matplotlib no tenía soporte 3D, pero se ha agregado de nuevo recientemente . Deberá usar la versión svn, ya que no se ha realizado ninguna versión desde entonces, y la documentación es un poco escasa (vea ejemplos / mplot3d / demo.py). No sé si mplot3d admite gráficos de barras 3D reales, pero una de las demostraciones se parece un poco a algo así.

Editar: El código fuente de la demostración está en los ejemplos pero por alguna razón el resultado es no. Me refiero a la función test_polys, y así es como se ve:

figura de ejemplo http://www.iki.fi/jks/tmp/poly3d.png

La función test_bar2D sería aún mejor, pero está comentada en la demostración ya que causa un error con la versión actual de svn. Podría ser un problema trivial o algo que es más difícil de solucionar.

Una posibilidad más es Gnuplot, que puede dibujar algún tipo de pseudo Los gráficos de barras 3D , y gnuplot.py permiten la interfaz a Gnuplot desde Python. Sin embargo, no lo he probado.

Este es mi código para un Bar-3d simple usando matplotlib.

import mpl_toolkits
from mpl_toolkits.mplot3d import Axes3D   
import matplotlib.pyplot as plt
%matplotlib inline

## The value you want to plot 
zval=[0.020752244,0.078514652,0.170302899,0.29543857,0.45358061,0.021255922,0.079022499,\
  0.171294169,0.29749654,0.457114286,0.020009631,0.073154019,0.158043498,0.273889264,0.419618287]    

fig = plt.figure(figsize=(12,9))
ax = fig.add_subplot(111,projection='3d')
col=["#ccebc5","#b3cde3","#fbb4ae"]*5
xpos=[1,2,3]*5
ypos=range(1,6,1)*5
zpos=[0]*15
dx=[0.4]*15
dy=[0.5]*15
dz=zval

for i in range(0,15,1):
     ax.bar3d(ypos[i], xpos[i], zpos[i], dx[i], dy[i], dz[i],     
color=col[i],alpha=0.75)

ax.view_init(azim=120)
plt.show()      

http://i8.tietuku.com/ea79b55837914ab2.png

Puede consultar el Director de gráficos:

  

http://www.advsofteng.com

Tiene una variedad bastante amplia de tablas y gráficos y tiene una buena API de Python (y varios otros idiomas).

Hay dos ediciones: la versión gratuita pone una nota publicitaria en la imagen generada, y la la versión de pago tiene un precio bastante razonable.

Este es uno de los gráficos de barras apiladas en 3D más interesantes:

 gráfico de muestra
(fuente: advsofteng.com )

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top