2012-01-25 3 views
7

4 개 이상의 값으로 3d 막대 그래프를 만들면 그래프가 올바르게 보이지만 3 개로 막대를 삼각형으로 만들면 어떻게됩니까?Matplotlib의 3d 막대 그래프 문제

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

이 생성

Triangular bar

을하지만 5 인덱스와 높이의 수를 늘릴 때이 얻을 : 당신은 단지 때문에

Correct bar

+2

가능한 버그 인 것 같습니다. –

+1

3 개와 삼각형을 가지고 있고 2 개 막대기로 그릴 수는 없습니다 ... windows 7 matplotlib 1.1.0 – joaquin

+0

matplotlib에서 버그를보고 할 수있는 사람은 누구입니까? – user1170056

답변

0

이것은 플롯에 3 점을줍니다. 코드를 다음과 같이 변경하면 제대로 작동합니다.

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

이것은 거의 확실한 버그입니다. 리눅스에 Example of code working as desired for 3 points

내가하기 matplotlib 버전 1.1.1rc을 실행 해요 : 귀하의 예제 코드를 노력하는 것은 (1, 2, 3, 5, 15 테스트) 점의 수와, 나에게 직사각형 바의 원하는 결과를 제공합니다 . 가능한 경우 최신 버전으로 업데이트하십시오.

import matplotlib 
print matplotlib.__version__ 

은 사용중인 버전을 알려줍니다.

+0

이 코드는 OS X 10.7.4의 Python 2.7.3/Matplotlib 1.1.1에서 예상대로 작동합니다. 실제로 버그 일 것입니다. – Tim