2009-05-09 18 views
6

में 3 डी मैं विभिन्न रूपों में कुछ डेटा प्लॉट की जरूरत है। वर्तमान में मैं Matplotlib का उपयोग कर रहा हूं और मैं उन भूखंडों से काफी खुश हूं जो मैं उत्पादन करने में सक्षम हूं।Barchart (ओ साजिश) अजगर

यह प्रश्न अंतिम व्यक्ति को कैसे प्लॉट करना है इस पर है। डेटा, "दूरी तालिका" के समान है this की तरह (सिर्फ बड़ा, मेरी मेज 128x128 है और अभी भी तत्व प्रति 3 या उससे अधिक संख्या है)।

अब, मेरा डेटा एक दूरी तालिका से बेहतर "संरचित" है (मेरा डेटा वर्णमाला से क्रमबद्ध दूरी तालिका में "यादृच्छिक रूप से" भिन्न नहीं होता है), इस प्रकार एक 3 डी barchart, या शायद उनमें से 3, होगा उत्तम। मेरी समझ यह है कि Matplotlib में ऐसा चार्ट गुम है।

मैं कर सकता these या imshow की तरह 2 डी में कुछ की तरह एक (रंग) Countor3d उपयोग करते हैं, लेकिन यह वास्तव में अच्छी तरह से कौन-सा डेटा (डेटा बस अपना 128 अंक में अर्थ है के प्रतिनिधि नहीं है, वहाँ कुछ भी नहीं है दो बिंदुओं के बीच)। और बार की ऊंचाई रंग, आईएमओ से अधिक पठनीय है।

इस प्रकार प्रश्न:

  1. यह संभव है matplotlib में 3 डी barchart बनाने के लिए? यह स्पष्ट होना चाहिए कि मेरा मतलब 2 डी डोमेन के साथ है, सौंदर्यशास्त्र उद्देश्यों के लिए "नकली" 3 डी प्रतिपादन के साथ केवल 2 डी ब्रैचर्ट नहीं,
  2. यदि पिछले प्रश्न का उत्तर नहीं है, तो क्या कोई अन्य लाइब्रेरी ऐसा करने में सक्षम है ? मैं दृढ़ता से कुछ पाइथन आधारित पसंद करता हूं, लेकिन मैं अन्य लिनक्स-अनुकूल संभावनाओं के साथ ठीक हूं
  3. यदि पिछले प्रश्न का उत्तर नहीं है, तो क्या आपके पास उस डेटा को दिखाने के तरीके पर कोई सुझाव है? जैसे मूल्यों के साथ एक टेबल बनाएं, इम्शो या अन्य रंगीन तरीके से अतिसंवेदनशील?

उत्तर

5

MyavaVi23D barcharts (थोड़ा नीचे स्क्रॉल कर सकते हैं) बना सकते हैं। एक बार जब आप MayaVi/VTK/ETS है/आदि। इसे सभी खूबसूरती से काम करता है, लेकिन यह कुछ काम स्थापित हो सकता है। उबंटू ने इसे पैक किया है, लेकिन वे एकमात्र लिनक्स वितरण हैं जो मुझे पता है।

+1

अच्छा लग रहा है एक यह केक का एक टुकड़ा, बस sudo उबंटू में स्थापित करने के लिए है apt-get mayavi2 स्थापित दुर्भाग्य है कि उदाहरण काम नहीं करते: enthought.mayavi से । mlab आयात * ImportError: नहीं मॉड्यूल mlab जबकि नामित enthought.mayavi.tools.mlab आयात * कार्यों से (सुझाव पाया ऑनलाइन) , लेकिन barchart प्रदान नहीं करते हैं() सुझाव? – Davide

+0

आपके पास mayavi2 का कौन सा संस्करण है? मेरा मानना ​​है कि एमएलएबी 3.1.0 रिलीज के लिए ओवरहाल किया गया था, और यही वह दस्तावेज है जो दस्तावेज कवर कर रहा है। – Autoplectic

+0

"mayavi2 -V" देता है "मायावी 2.0.2 ए 1" – Davide

7

कुछ समय के लिए, matplotlib के पास 3 डी समर्थन नहीं था, लेकिन इसे recently वापस जोड़ा गया है। के बाद से कोई रिहाई के बाद से किया गया है आप, SVN संस्करण का उपयोग करने की आवश्यकता होगी, और प्रलेखन (देखें उदाहरण/mplot3d/demo.py) एक छोटे से विरल है। मुझे नहीं पता कि mplot3d वास्तविक 3 डी बार चार्ट का समर्थन करता है, लेकिन डेमो में से एक ऐसा दिखता है जैसे इसे कुछ ऐसा बढ़ाया जा सकता है।

संपादित करें: डेमो के लिए स्रोत कोड the examples में है लेकिन किसी कारण से परिणाम नहीं है। मेरा मतलब है test_polys समारोह, और यहाँ है कि यह कैसे की तरह लग रहा है:

example figure http://www.iki.fi/jks/tmp/poly3d.png

test_bar2D समारोह भी बेहतर होगा, लेकिन यह डेमो में बाहर टिप्पणी की है के रूप में यह वर्तमान SVN संस्करण के साथ एक त्रुटि का कारण बनता है। कुछ मामूली समस्या हो सकती है, या कुछ ठीक करना मुश्किल है।

+0

क्या डेमो परिणाम कहीं ऑनलाइन देखा जा सकता है? यदि नहीं, तो क्या आप इसे अपनी स्थानीय मशीन पर चला सकते हैं और स्रोत कोड और परिणामी तस्वीर दिखाने के लिए अपना उत्तर संपादित कर सकते हैं? – Davide

+0

धन्यवाद, मैं आपका जवाब स्वीकार नहीं कर रहा हूं क्योंकि यह अभी काम नहीं करता है, लेकिन मैंने इसे ऊपर उठाया है, और मैं इसे – Davide

0

आप की जाँच हो सकता है चार्ट निर्देशक:

http://www.advsofteng.com

यह चार्ट और ग्राफ़ की एक बहुत विस्तृत विविधता है और एक अच्छा अजगर (और कई अन्य भाषाओं) एपीआई है।

दो संस्करण हैं: नि: शुल्क संस्करण उत्पन्न छवि पर एक blurb डालता है, और वेतन संस्करण बहुत यथोचित मूल्य है।

यहाँ और अधिक दिलचस्प लग रही स्टैक्ड बार चार्ट 3 डी में से एक है:

sample graph http://www.advsofteng.com/images/demo10.png

5

एक और संभावना gnuplot, जो pseudo 3D bar charts किसी तरह आकर्षित कर सकते हैं है, और gnuplot.py अजगर से gnuplot के लिए इंटरफ़ेस की अनुमति देता है। हालांकि, मैंने इसे खुद कोशिश नहीं की है।

+2

+1 वाह पर काम करने के लिए तत्पर हूं, पाइथन में बैक दरवाजे से gnuplot आ रहा है :-) I इसे 90 के दशक में बहुत उपयोग किया गया ... मैं इसे देख लूंगा (लेकिन छद्म 3 डी बार चार्ट नए उपकरणों की तुलना में बदसूरत हैं ...) – Davide

1

यह matplotlib का उपयोग कर एक साधारण बार -3 डी के लिए मेरा कोड है।

import mpl_toolkits 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
%matplotlib inline 

## The value you want to plot 
zval=[0.020752244,0.078514652,0.170302899,0.29543857,0.45358061,0.021255922,0.079022499,\ 
    0.171294169,0.29749654,0.457114286,0.020009631,0.073154019,0.158043498,0.273889264,0.419618287]  

fig = plt.figure(figsize=(12,9)) 
ax = fig.add_subplot(111,projection='3d') 
col=["#ccebc5","#b3cde3","#fbb4ae"]*5 
xpos=[1,2,3]*5 
ypos=range(1,6,1)*5 
zpos=[0]*15 
dx=[0.4]*15 
dy=[0.5]*15 
dz=zval 

for i in range(0,15,1): 
    ax.bar3d(ypos[i], xpos[i], zpos[i], dx[i], dy[i], dz[i],  
color=col[i],alpha=0.75) 

ax.view_init(azim=120) 
plt.show()  

http://i8.tietuku.com/ea79b55837914ab2.png

+0

पार्टी के लिए थोड़ा देर हो चुकी है (मैं भी नहीं याद रखें कि मैं फिर से साजिश करने की कोशिश कर रहा था!) ​​लेकिन अंततः matplotlib में इस सुविधा को लागू करने के लिए अच्छा लगा – Davide

संबंधित मुद्दे