2013-12-18 18 views
46

Tôi gặp vấn đề khi tạo biểu đồ từ các đối tượng chuỗi gấu trúc và tôi không thể hiểu tại sao nó không hoạt động. Các mã đã làm việc tốt trước nhưng bây giờ nó không.Lỗi Matplotlib/Pandas sử dụng biểu đồ

Dưới đây là một chút của mã của tôi (cụ thể là, một đối tượng loạt gấu trúc Tôi đang cố gắng để tạo ra một biểu đồ của):

type(dfj2_MARKET1['VSPD2_perc']) 

mà kết quả đầu ra kết quả: pandas.core.series.Series

Dưới đây là âm mưu của tôi mã:

fig, axes = plt.subplots(1, 7, figsize=(30,4)) 
axes[0].hist(dfj2_MARKET1['VSPD1_perc'],alpha=0.9, color='blue') 
axes[0].grid(True) 
axes[0].set_title(MARKET1 + ' 5-40 km/h') 

thông báo lỗi:

AttributeError       Traceback (most recent call last) 
    <ipython-input-75-3810c361db30> in <module>() 
     1 fig, axes = plt.subplots(1, 7, figsize=(30,4)) 
     2 
    ----> 3 axes[1].hist(dfj2_MARKET1['VSPD2_perc'],alpha=0.9, color='blue') 
     4 axes[1].grid(True) 
     5 axes[1].set_xlabel('Time spent [%]') 

    C:\Python27\lib\site-packages\matplotlib\axes.pyc in hist(self, x, bins, range, normed,   weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, **kwargs) 
    8322    # this will automatically overwrite bins, 
    8323    # so that each histogram uses the same bins 
-> 8324    m, bins = np.histogram(x[i], bins, weights=w[i], **hist_kwargs) 
    8325    m = m.astype(float) # causes problems later if it's an int 
    8326    if mlast is None: 

    C:\Python27\lib\site-packages\numpy\lib\function_base.pyc in histogram(a, bins, range,  normed, weights, density) 
    158   if (mn > mx): 
    159    raise AttributeError(
--> 160     'max must be larger than min in range parameter.') 
    161 
    162  if not iterable(bins): 

AttributeError: max must be larger than min in range parameter. 
+0

Hmm, nó làm việc cho tôi. Bạn có thể hiển thị khung dữ liệu của mình không? –

+0

Hmm, lạ khi tôi làm điều này tôi thực sự có thể tạo ra một biểu đồ: s = dfj2_MARKET1 ['VSPD1_perc'] s.hist() – jonas

+0

Có, nhưng sau đó bạn đang sử dụng chức năng 'hist' gấu trúc, và không phải matplotlibs. Và điều này xử lý ví dụ như NaNs như mong đợi. Xem cập nhật của tôi. – joris

Trả lời

78

Lỗi này xảy ra trong số những thứ khác khi bạn có giá trị NaN trong chuỗi. Trường hợp đó như thế nào?

Các NaN này không được xử lý tốt bởi chức năng hist của matplotlib. Ví dụ:

s = pd.Series([1,2,3,2,2,3,5,2,3,2,np.nan]) 
fig, ax = plt.subplots() 
ax.hist(s, alpha=0.9, color='blue') 

sản xuất cùng một lỗi AttributeError: max must be larger than min in range parameter. Một tùy chọn là loại bỏ NaN trước khi vẽ đồ thị. Điều này sẽ làm việc:

ax.hist(s.dropna(), alpha=0.9, color='blue') 

Một lựa chọn khác là sử dụng gấu trúc hist phương pháp trên hàng loạt của bạn và cung cấp các axes[0] đến từ khóa ax:

dfj2_MARKET1['VSPD1_perc'].hist(ax=axes[0], alpha=0.9, color='blue') 
+0

Hoạt động hoàn hảo !!! Cảm ơn bạn rất nhiều – jonas

+0

Perfect NaN tạo lỗi và ngoại lệ pandas/pyplot không chia sẻ đủ thông tin. Thực sự hữu ích. – Doogle

+0

Hoạt động hoàn hảo! –

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