2012-01-25 37 views
7

Khi tôi tạo một hình ba lô với 4 hoặc nhiều giá trị, biểu đồ có vẻ chính xác nhưng khi tôi thử nó với 3 thanh trở thành hình tam giác, điều gì đang xảy ra?Vấn đề về đồ họa 3d ở 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() 

tạo này:

Triangular bar

nhưng khi tôi tăng số lượng các chỉ số và chiều cao đến 5 Tôi có được điều này:

Correct bar

+2

Điều đó trông giống như một lỗi có thể xảy ra. –

+1

với 3 bạn có hình tam giác và với 2 thanh nó không vẽ chúng ... windows 7 matplotlib 1.1.0 – joaquin

+0

Có ai biết nơi tôi có thể báo cáo lỗi trong matplotlib? – user1170056

Trả lời

0

Điều này là do bạn chỉ cho nó 3 điểm để vẽ. Chỉ cần thay đổi mã để theo dõi và nó sẽ hoạt động.

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

Đây gần như chắc chắn là lỗi. Việc thử mã mẫu của bạn cho tôi kết quả mong muốn của các thanh hình chữ nhật, với bất kỳ số điểm nào (được thử nghiệm với 1, 2, 3, 5, 15): Example of code working as desired for 3 points

Tôi đang chạy phiên bản matplotlib 1.1.1rc, trên linux . Nếu có thể, hãy thử cập nhật lên phiên bản mới nhất. Lưu ý rằng

import matplotlib 
print matplotlib.__version__ 

sẽ cho bạn biết bạn đang sử dụng phiên bản nào.

+0

Mã cũng hoạt động như mong đợi trên Python 2.7.3/Matplotlib 1.1.1 trên OS X 10.7.4, vì vậy, thực sự có thể là một lỗi. – Tim

Các vấn đề liên quan