ฉันเล่นกับ Numpy และ matplotlib ในช่วงสองสามวันที่ผ่านมา ฉันมีปัญหาในการพยายามทำให้ matplotlib พล็อตฟังก์ชันโดยไม่ปิดกั้นการดำเนินการ ฉันรู้ว่ามีกระทู้มากมายที่ SO ถามคำถามที่คล้ายกันและฉันก็ googled ค่อนข้างมาก แต่ยังไม่สามารถทำงานนี้ได้
ฉันได้ลองใช้ show (block = False) ตามที่บางคนแนะนำ แต่สิ่งที่ฉันได้รับคือหน้าต่างที่ค้าง ถ้าฉันเรียก show () ผลลัพธ์จะถูกวางแผนอย่างถูกต้อง แต่การดำเนินการจะถูกบล็อกจนกว่าหน้าต่างจะปิด จากหัวข้ออื่น ๆ ที่ฉันเคยอ่านฉันสงสัยว่าการแสดง (block = False) ทำงานหรือไม่ขึ้นอยู่กับแบ็กเอนด์ ถูกต้องหรือไม่ ส่วนหลังของฉันคือ Qt4Agg คุณช่วยดูรหัสของฉันและบอกฉันว่าคุณเห็นสิ่งผิดปกติหรือไม่? นี่คือรหัสของฉัน ขอบคุณสำหรับความช่วยเหลือ
from math import *
from matplotlib import pyplot as plt
print plt.get_backend()
def main():
x = range(-50, 51, 1)
for pow in range(1,5): # plot x^1, x^2, ..., x^4
y = [Xi**pow for Xi in x]
print y
plt.plot(x, y)
plt.draw()
#plt.show() #this plots correctly, but blocks execution.
plt.show(block=False) #this creates an empty frozen window.
_ = raw_input("Press [enter] to continue.")
if __name__ == '__main__':
main()
ปล. ฉันลืมบอกไปว่าฉันต้องการอัปเดตหน้าต่างที่มีอยู่ทุกครั้งที่ฉันวางแผนอะไรบางอย่างแทนที่จะสร้างใหม่
plt.ion()
มาก่อนplt.show()
หรือไม่? จากนั้นควรไม่ปิดกั้นเนื่องจากแต่ละพล็อตถูกสร้างเป็นเธรดย่อย