Môi trường: Python 2.7, matplotlib 1.3, IPython notebook 1.1, linux, chrome. Mã nằm trong một ô đầu vào duy nhất, sử dụng--pylab=inline
Tôi muốn sử dụng máy tính xách tay và gấu trúc IPython để sử dụng luồng và cập nhật động một âm mưu sau mỗi 5 giây.
Khi tôi chỉ sử dụng câu lệnh print để in dữ liệu ở định dạng văn bản, nó hoạt động hoàn toàn tốt: ô đầu ra chỉ tiếp tục in dữ liệu và thêm các hàng mới. Nhưng khi tôi cố gắng vẽ biểu đồ dữ liệu (và sau đó cập nhật nó trong một vòng lặp), biểu đồ không bao giờ hiển thị trong ô đầu ra. Nhưng nếu tôi loại bỏ vòng lặp, chỉ cần vẽ sơ đồ một lần. Nó hoạt động tốt.
Sau đó, tôi đã thực hiện một số thử nghiệm đơn giản:
i = pd.date_range('2013-1-1',periods=100,freq='s')
while True:
plot(pd.Series(data=np.random.randn(100), index=i))
#pd.Series(data=np.random.randn(100), index=i).plot() also tried this one
time.sleep(5)
Đầu ra sẽ không hiển thị bất cứ điều gì cho đến khi tôi ngắt quá trình theo cách thủ công (ctrl + m + i). Và sau khi tôi ngắt lời, cốt truyện hiển thị chính xác dưới dạng nhiều dòng chồng lên nhau. Nhưng những gì tôi thực sự muốn là một âm mưu hiển thị và được cập nhật sau mỗi 5 giây (hoặc bất cứ khi nào plot()
hàm được gọi, giống như kết quả của câu lệnh in mà tôi đã đề cập ở trên, hoạt động tốt). Chỉ hiển thị biểu đồ cuối cùng sau khi ô hoàn thành KHÔNG phải là điều tôi muốn.
Tôi thậm chí đã cố gắng thêm một cách rõ ràng hàm draw () sau mỗi hàm plot()
, v.v. Không có hàm nào hoạt động. Tự hỏi làm thế nào để cập nhật động một âm mưu bằng vòng lặp for / while trong một ô trong sổ ghi chép IPython.