2012-01-25 15 views
7

में 3 डी बारग्राफ समस्या जब मैं 4 या अधिक मानों के साथ 3 डी बारग्राफ बनाता हूं तो ग्राफ सही दिखता है लेकिन जब मैं इसे 3 बार सलाखों से त्रिकोण बनता हूं, तो क्या चल रहा है?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() 

इस उत्पन्न करता है:

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

यह लगभग निश्चित रूप से एक बग है। अपने उदाहरण कोड की कोशिश कर रहा मुझे आयताकार सलाखों के वांछित परिणाम देता है, किसी भी (1, 2, 3, 5, 15 के साथ परीक्षण) अंकों की संख्या के साथ: Example of code working as desired for 3 points

मैं चल रहा हूँ matplotlib संस्करण 1.1.1rc, लिनक्स पर । यदि आप कर सकते हैं, नवीनतम संस्करण में अद्यतन करने का प्रयास करें। ध्यान दें कि

import matplotlib 
print matplotlib.__version__ 

आपको बताएगा कि आप किस संस्करण का उपयोग कर रहे हैं।

+0

यह कोड ओएस एक्स 10.7.4 पर पायथन 2.7.3/मैटलप्लिब 1.1.1 पर अपेक्षित के रूप में भी काम करता है, इसलिए यह है वास्तव में शायद एक बग। – Tim