2014-04-17 13 views
6

मैं तो जैसे एक श्रृंखला barplots पर त्रुटि सलाखों प्लॉट कर सकते हैं में एक से अधिक श्रृंखला के साथ barplots पर त्रुटि सलाखों साजिश एक ही इंडेक्स का विचलन, और त्रुटि बार इस मान के +/- को दिखाता है।पांडा

हालांकि, जब मैं एक ही भूखंड मैं उसी तरह से मानक विचलन उपयोग नहीं कर सकते में दोनों 'mean1' और 'mean2' साजिश करने का प्रयास करें:

df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']], alpha = 0.5,error_kw=dict(ecolor='k')) 

    Traceback (most recent call last): 

    File "<ipython-input-587-23614d88a3c5>", line 1, in <module> 
    df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']], alpha = 0.5,error_kw=dict(ecolor='k')) 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", line 1705, in plot_frame 
    plot_obj.generate() 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", line 878, in generate 
    self._make_plot() 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", line 1534, in _make_plot 
    start=start, label=label, **kwds) 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", line 1481, in f 
    return ax.bar(x, y, w, bottom=start,log=self.log, **kwds) 

    File "C:\Users\nameDropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\matplotlib\axes.py", line 5075, in bar 
    fmt=None, **error_kw) 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\matplotlib\axes.py", line 5749, in errorbar 
    iterable(yerr[0]) and iterable(yerr[1])): 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\frame.py", line 1635, in __getitem__ 
    return self._getitem_column(key) 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\frame.py", line 1642, in _getitem_column 
    return self._get_item_cache(key) 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\generic.py", line 983, in _get_item_cache 
    values = self._data.get(item) 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\internals.py", line 2754, in get 
    _, block = self._find_block(item) 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\internals.py", line 3065, in _find_block 
    self._check_have(item) 

    File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\internals.py", line 3072, in _check_have 
    raise KeyError('no item named %s' % com.pprint_thing(item)) 

KeyError: u'no item named 0' 

निकटतम मैं अपने वांछित उत्पादन के लिए मिल गया है यह है:

df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']].values.T, alpha = 0.5,error_kw=dict(ecolor='k')) 

enter image description here

लेकिन अब त्रुटि सलाखों संतुलित प्लॉट नहीं कर रहे हैं। इसके बजाय प्रत्येक श्रृंखला में हरे और धुंधले बार समान सकारात्मक और नकारात्मक त्रुटि का उपयोग करते हैं और यह वह जगह है जहां मैं फंस गया हूं। मैं अपने मल्टीज़रीज़ बारप्लॉट के त्रुटि सलाखों को एक समान रूप से प्रदर्शित करने के लिए कैसे प्राप्त कर सकता हूं जब मेरे पास केवल एक श्रृंखला थी?

अद्यतन: लगता है इस pandas 0.14 में तय हो गई है, जैसे कि मैंने पहले 0.13 के लिये दस्तावेज पढ़ रहा था। मेरे पास अभी मेरे पांडा को अपग्रेड करने की संभावना नहीं है। बाद में करेंगे और देखेंगे कि यह कैसे निकलता है।

+0

क्या आप इसे कभी समझते हैं? – pocketfullofcheese

+0

मैंने अभी भी 0.14 में इसे आजमाया नहीं है। मैं इस विशिष्ट मामले के लिए सीधे matplotlib का उपयोग करना समाप्त कर दिया। –

उत्तर

6

रोजर कि अजेन और एलियस!

वैसे मुझे अंततः प्रश्न का उत्तर मिल गया। यह कुछ ऐसा है जो मैं अब दिनों के लिए करने की कोशिश कर रहा हूं। समस्या जाहिर है पांडों के पहले संस्करण में एक मुद्दा था। मैंने पांडस 0.15.0 स्थापित किया है और अब आप एक और डेटा फ्रेम का संदर्भ दे सकते हैं और समूहबद्ध बार प्लॉट्स पर त्रुटि बार के लिए डेटा का उपयोग कर सकते हैं जैसे सेफ्लो ऊपर करने की कोशिश कर रहा था। तो निम्नलिखित कोड अब पांडस 0.15.0 में काम करता है।

import pandas as pd 
import matplotlib.pyplot as plt 
df = pd.DataFrame([[4,6,1,3], [5,7,5,2]], columns = ['mean1', 'mean2', 'std1', 'std2'], index=['A', 'B']) 
print(df) 

df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']].values.T, alpha = 0.5,error_kw=dict(ecolor='k')) 
plt.show() 
+1

इस काम को जानना अच्छा है। मेरे प्रश्न में अपडेट में मैंने नोट किया कि यह पांडा 0.14 से तय किया गया था। लेकिन मुझे अपने पांडा को फिर से अपडेट करने की संभावना नहीं थी और उसके बाद मैं इसके बारे में भूल गया =) –