2012-01-25 10 views
7

4つ以上の値を持つ3次元バーグラフを作成すると、グラフは正しく表示されますが、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つの棒で描かれていません...窓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

これはほとんどのバグです。 Linux上で、 Example of code working as desired for 3 points

私はmatplotlibのバージョン1.1.1rcを実行している:あなたの例のコードをしようとすると、(1、2、3、5、15でテスト)任意の数の点で、私に長方形のバーの望ましい結果を与えます。可能であれば、最新バージョンにアップデートしてみてください。

import matplotlib 
print matplotlib.__version__ 

あなたが使用しているバージョンを教えてください。

+0

このコードは、Python 2.7.3/Matplotlib 1.1.1(OS X 10.7.4)でも期待通りに機能します。確かにおそらくバグ。 – Tim