2012-10-23 37 views
6

Tôi đang cố gắng để tạo ra âm mưu thanh từ một DataFrame như thế này:Sử dụng gấu trúc để vẽ với barplots thanh lỗi

  Pre Post 
Measure1 0.4 1.9 

Những giá trị này là giá trị trung bình tôi tính từ nơi khác, và tôi cũng có sai và tiêu chuẩn của họ độ lệch (và lỗi chuẩn). Tôi muốn vẽ các kết quả như một âm mưu thanh với các thanh lỗi thích hợp, nhưng chỉ định giá trị nhiều hơn một lỗi để yerr mang một ngoại lệ:

# Data is a DataFrame instance 
fig = data.plot(kind="bar", yerr=[0.1, 0.3]) 

[...] 
ValueError: In safezip, len(args[0])=1 but len(args[1])=2 

Nếu tôi chỉ định một giá trị duy nhất (không chính xác) tất cả là tốt. Làm thế nào tôi có thể thực sự cung cấp cho mỗi cột thanh lỗi chính xác của nó?

Trả lời

6

Hình dạng dữ liệu của bạn là gì?

Đối với một vector dữ liệu n-by-1, bạn cần một vector n-by-2 lỗi (sai số dương và lỗi âm):

import pandas as pd 
import matplotlib.pyplot as plt 

df2 = pd.DataFrame([0.4, 1.9]) 
df2.plot(kind='bar', yerr=[[0.1, 3.0], [3.0, 0.1]]) 

plt.show() 

enter image description here

+0

Hình dạng là 1 hàng và 2 cột. Tôi đã thử ở trên với dữ liệu của tôi và nó vẫn còn lỗi. – Einar

+0

Bạn có thể chỉ làm phẳng ma trận của mình thành một véc tơ như trên không? Dù sao, tôi đã nhìn sâu hơn vào pandas.DataFrame.plot và tôi đã không tìm thấy một cách để âm mưu các thanh lỗi cho dữ liệu ma trận. Bạn có thể phải quay trở lại mathplotlib: [MatplotlibBarPlots] (http://www.duke.edu/~ccc14/pcfb/numpympl/MatplotlibBarPlots.html) – lucasg

+0

Tôi đã may mắn hơn bằng cách chuyển đổi ma trận: giống như nó hoạt động . – Einar

Các vấn đề liên quan