tôi có thể vẽ thanh lỗi trên barplots loạt duy nhất như vậy:Vẽ thanh lỗi trên barplots với nhiều loạt trong gấu trúc
import pandas as pd
df = pd.DataFrame([[4,6,1,3], [5,7,5,2]], columns = ['mean1', 'mean2', 'std1', 'std2'], index=['A', 'B'])
print(df)
mean1 mean2 std1 std2
A 4 6 1 3
B 5 7 5 2
df['mean1'].plot(kind='bar', yerr=df['std1'], alpha = 0.5,error_kw=dict(ecolor='k'))
Đúng như dự đoán, giá trị trung bình của chỉ số A được kết hợp với tiêu chuẩn độ lệch của cùng một chỉ mục và thanh lỗi hiển thị +/- của giá trị này.
Tuy nhiên, khi tôi cố gắng vẽ cả 'mean1' và 'mean2' trong cốt truyện cùng tôi không thể sử dụng độ lệch chuẩn trong cùng một cách:
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'
Gần nhất tôi đã nhận được đầu ra mong muốn của tôi là thế này:
df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']].values.T, alpha = 0.5,error_kw=dict(ecolor='k'))
Nhưng bây giờ các quán bar lỗi không vẽ đối xứng. Thay vào đó, các thanh màu xanh lá cây và mờ trong mỗi chuỗi sử dụng cùng một lỗi tích cực và tiêu cực và đây là nơi tôi bị kẹt. Làm thế nào tôi có thể nhận được các thanh lỗi của barplot multiseries của tôi để có một sự xuất hiện tương tự như khi tôi chỉ có một loạt?
Cập nhật: Có vẻ như điều này được sửa trong pandas 0.14, tôi đã đọc tài liệu cho 0.13 trước đó. Tôi không có khả năng nâng cấp gấu trúc của tôi ngay bây giờ. Sẽ làm sau và xem nó như thế nào.
bạn đã bao giờ tìm ra điều này chưa? – pocketfullofcheese
Tôi vẫn chưa thử trong 0,14. Tôi đã kết thúc việc sử dụng matplotlib trực tiếp cho trường hợp cụ thể này. –