2012-01-25 21 views
7

Cuando hago una gráfica de barra 3d con 4 o más valores, el gráfico parece correcto, pero cuando lo intento con 3 las barras se vuelven triángulos, ¿qué está pasando?Problema de bargraph 3d en Matplotlib

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 

color_grade_classes = ['#80FF00','#FFFF00','#FF8000', '#FF0000'] 

for colors, rows in zip(color_grade_classes, [3,2,1,0]): 
    indexs = np.arange(3) 
    heights = np.random.rand(3) 
    print rows, indexs, heights, colors 

    ax.bar(indexs, heights, zs = rows, zdir='y', color=colors, alpha=0.8) 

ax.set_xlabel('X') 
ax.set_ylabel('Y') 

plt.show() 

genera esto:

Triangular bar

pero cuando puedo aumentar el número de índices y alturas a 5 me sale esto:

Correct bar

+2

Parece un posible error. –

+1

con 3 tiene triángulos y con 2 barras no los dibuja ... windows 7 matplotlib 1.1.0 – joaquin

+0

¿Alguien sabe dónde puedo reportar errores en matplotlib? – user1170056

Respuesta

0

Esto se debe a que son sólo dándole 3 puntos a la trama. Simplemente cambie el código a siguiente y debería funcionar.

indexs = np.arange(4) # not 3 
heights = np.random.rand(4) # not 3 
1

Esto es casi seguro un error. Tratando el código de ejemplo me da el resultado deseado de barras rectangulares, con cualquier número de puntos (probado con 1, 2, 3, 5, 15): Example of code working as desired for 3 points

estoy corriendo matplotlib versión 1.1.1rc, en Linux . Si puede, intente actualizar a la última versión. Tenga en cuenta que

import matplotlib 
print matplotlib.__version__ 

le dirá qué versión está utilizando.

+0

El código también funciona como se esperaba en Python 2.7.3/Matplotlib 1.1.1 en OS X 10.7.4, por lo que es de hecho, probablemente un error. – Tim

Cuestiones relacionadas