Lingkungan: Python 2.7, matplotlib 1.3, notebook IPython 1.1, linux, chrome. Kode berada dalam satu sel input tunggal, menggunakan--pylab=inline
Saya ingin menggunakan notebook dan panda IPython untuk menggunakan streaming dan secara dinamis memperbarui plot setiap 5 detik.
Ketika saya hanya menggunakan pernyataan cetak untuk mencetak data dalam format teks, itu berfungsi dengan baik: sel keluaran hanya terus mencetak data dan menambahkan baris baru. Tetapi ketika saya mencoba untuk memplot data (dan kemudian memperbaruinya dalam satu lingkaran), plot tersebut tidak pernah muncul di sel keluaran. Tetapi jika saya menghapus loop, cukup plot sekali. Ini bekerja dengan baik.
Kemudian saya melakukan beberapa tes sederhana:
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)
Output tidak akan menampilkan apa pun sampai saya menghentikan proses secara manual (ctrl + m + i). Dan setelah saya menghentikannya, plot ditampilkan dengan benar sebagai beberapa garis yang tumpang tindih. Tapi yang benar-benar saya inginkan adalah plot yang muncul dan diperbarui setiap 5 detik (atau setiap kali plot()
fungsi dipanggil, seperti output pernyataan cetak yang saya sebutkan di atas, yang berfungsi dengan baik). Hanya menampilkan bagan akhir setelah sel selesai sepenuhnya BUKANLAH yang saya inginkan.
Saya bahkan mencoba untuk secara eksplisit menambahkan fungsi draw () setelah masing-masing plot()
, dll. Tak satu pun dari mereka berfungsi. Bertanya-tanya bagaimana cara memperbarui plot secara dinamis dengan loop for / while dalam satu sel di notebook IPython.