2013-12-16 13 views
5

Có cách nào để kiểm soát định dạng lưới khi thực hiện pandas.DataFrame.plot() không?gấu trúc: làm cách nào tôi có thể hiển thị đường viền thứ cấp nhỏ trên trục x trong pd.DataFrame.plot()

Cụ thể tôi muốn hiển thị các đường lưới nhỏ để vẽ sơ đồ một DataFrame bằng trục x có DateTimeIndex.

Điều này có thể thông qua DataFrame.plot() không?

df = pd.DataFrame.from_csv(csv_file, parse_dates=True, sep=' ') 

Trả lời

7

này sẽ âm mưu S & P500 với xticks nhỏ và lưới ở tần số hàng tuần:

import pandas.io.data as web 
ts = web.DataReader("^GSPC", "yahoo", start=dt.date(2013, 6, 1))[ 'Adj Close' ] 

ax = ts.plot() 
xtick = pd.date_range(start=ts.index.min(), end=ts.index.max(), freq='W') 
ax.set_xticks(xtick, minor=True) 
ax.grid('on', which='minor', axis='x') 
ax.grid('off', which='major', axis='x') 

enter image description here

+0

đẹp, nhưng làm thế nào tôi có thể làm điều này bằng cách sử dụng một DataFrame, như được đưa ra trong câu hỏi của tôi? Tôi không thể tìm thấy một tương đương với ts.index.min(), cho một DataFrame - df.idxmin() trả về một chuỗi ... – user2846226

+0

@ user2846226 cho một DataFrame 'df.index.min()' cũng hoạt động tốt , trừ khi nó là đa chỉ số –

+0

nó thực sự, lỗi người dùng – user2846226

1

DataFrame.plot() nên trả về đối tượng Axes từ matplotlib.

Vì vậy, với ax = df.plot(...), bạn có thể làm:

ax.xaxis.grid(True, which='minor', linestyle='-', linewidth=0.25, ...)

+0

tuyệt vời, tôi đã không nhận ra rằng âm mưu() trả về một đối tượng trục. Vì vậy, tôi đoán rằng một đồ thị png được hiển thị trong một máy tính xách tay IPython trong chế độ scilab vì máy tính xách tay phát hiện sự hiện diện của một đối tượng trục? – user2846226

2

Có lẽ đây tính năng không tồn tại trong năm ngoái, nhưng trong phiên bản 0.19.2 bạn có thể do:

df.plot(grid=True) 

Xem doc.

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