สภาพแวดล้อม: Python 2.7, matplotlib 1.3, IPython notebook 1.1, linux, chrome รหัสอยู่ในเซลล์อินพุตเดียวโดยใช้--pylab=inline
ฉันต้องการใช้สมุดบันทึก IPython และแพนด้าเพื่อใช้สตรีมและอัปเดตพล็อตแบบไดนามิกทุกๆ 5 วินาที
เมื่อฉันใช้คำสั่งพิมพ์เพื่อพิมพ์ข้อมูลในรูปแบบข้อความมันทำงานได้ดีอย่างสมบูรณ์: เซลล์ผลลัพธ์จะเก็บข้อมูลการพิมพ์และเพิ่มแถวใหม่ แต่เมื่อฉันพยายามลงจุดข้อมูล (แล้วอัปเดตแบบวนซ้ำ) พล็อตจะไม่ปรากฏในเซลล์ผลลัพธ์ แต่ถ้าฉันลบลูปออกก็แค่ลงจุดครั้ง มันทำงานได้ดี
จากนั้นฉันก็ทำการทดสอบง่ายๆ:
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)
ผลลัพธ์จะไม่แสดงอะไรเลยจนกว่าฉันจะขัดจังหวะกระบวนการด้วยตนเอง (ctrl + m + i) และหลังจากที่ฉันขัดจังหวะพล็อตจะแสดงเป็นเส้นที่ทับซ้อนกันหลายบรรทัดอย่างถูกต้อง แต่สิ่งที่ฉันต้องการจริงๆคือพล็อตที่แสดงและได้รับการอัปเดตทุก ๆ 5 วินาที (หรือเมื่อใดก็ตามที่มีplot()
การเรียกใช้ฟังก์ชันเช่นเดียวกับผลลัพธ์ของคำสั่งพิมพ์ที่ฉันกล่าวถึงข้างต้นซึ่งทำงานได้ดี) การแสดงแผนภูมิสุดท้ายหลังจากเซลล์เสร็จสมบูรณ์เท่านั้นไม่ใช่สิ่งที่ฉันต้องการ
ฉันพยายามที่จะเพิ่มฟังก์ชัน draw () อย่างชัดเจนหลังจากแต่ละฟังก์ชันplot()
ฯลฯ ไม่ได้ผลเลย สงสัยว่าจะอัปเดตพล็อตแบบไดนามิกโดยการวนรอบ for / while ภายในเซลล์เดียวในโน้ตบุ๊ก IPython