2011-03-30 20 views
5

मेरे पास scipy/numpy में एक Nx3 मैट्रिक्स है और मैं इसमें से 3 आयामी बार ग्राफ बनाना चाहता हूं, जहां एक्स और वाई अक्ष पहले के मानों से निर्धारित होते हैं और मैट्रिक्स के दूसरे कॉलम, प्रत्येक बार की ऊंचाई मैट्रिक्स में तीसरे स्तंभ है, और बार की संख्या एन से निर्धारित होता हैपाइथन matplotlib में 3 डी हिस्टोग्राम/बारप्लॉट प्लॉटिंग

दूसरे शब्दों में, यदि "डाटा" तो मैट्रिक्स है:

data[:, 0] # values of X-axis 
data[:, 1] # values of Y-axis 
data[:, 2] # values of each Z-axis bar 

और प्रत्येक लेन (डेटा)

मैटलप्लॉट में मैं यह कैसे कर सकता हूं lib?

दूसरा, इस प्रकार के रूप में, मैं एक ही चीज़ कैसे कर सकता हूं, लेकिन इस बार प्रत्येक एक्स, वाई, जेड आयाम में बारों को एन डिब्बे में हिस्टोग्राम करता है? अर्थात। प्रत्येक बिंदु के लिए एक बार के बजाय, प्रत्येक आयाम में डेटा को उन डिब्बे में हिस्टोग्राम करें, और प्रत्येक बिन के लिए एक बार प्लॉट करें।

आपकी मदद के लिए बहुत बहुत धन्यवाद।

उत्तर

4

Here is one example एक 3 डी बार प्लॉट के। Here is another

नम्पी के पास आयताकार कताई करने के लिए histogram2d नामक एक फ़ंक्शन है।

+0

मैं एक्स, वाई और जेड अक्ष को कैसे लेबल कर सकता हूं? – user248237dfsf

+0

इसके अलावा, जब मैं 3 डी स्कैटर प्लॉट बनाने के लिए ax.scatter का उपयोग करता हूं, तो यह स्वचालित रूप से अल्फा पारदर्शिता के साथ कुछ बिंदुओं को प्लॉट करता है - मैं इसे कैसे हटा सकता हूं और बिना किसी पारदर्शिता वाले सभी बिंदुओं को प्लॉट कर सकता हूं? – user248237dfsf

1

मेरे पास उदाहरणों से ठीक से मेरे डेटा की 'ऊंचाई' को आकार देने में थोड़ा मुश्किल समय था, लेकिन आखिरकार इसे निम्नलिखित कोड के साथ काम करने के लिए मिला। यहां, जेड मेरे सभी डेटा के साथ एक 3 आयामी सरणी है, और एक्स और रावल मूल रूप से डेटापॉइंट्स के अनुरूप 2-डी सूचकांक हैं।

xs = np.arange(biopsy_num) 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
for y in (np.arange(r_sweep)): 
    z = Z[:,y] 
    ax.bar(xs, z, zs=y, zdir='y', alpha=0.8) 

ax.set_xlabel('biopsies') 
ax.set_ylabel('radius of biopsy') 
ax.set_zlabel('Shannon Index') 

plt.show() 
संबंधित मुद्दे