Saya telah bermain dengan Numpy dan matplotlib dalam beberapa hari terakhir. Saya mengalami masalah saat mencoba membuat plot plot fungsi tanpa memblokir eksekusi. Saya tahu sudah ada banyak utas di sini tentang SO yang mengajukan pertanyaan serupa, dan saya sudah cukup banyak mencari di Google tetapi belum berhasil membuat ini berhasil.
Saya telah mencoba menggunakan show (block = False) seperti yang disarankan beberapa orang, tetapi yang saya dapatkan hanyalah jendela beku. Jika saya cukup memanggil show (), hasilnya diplot dengan benar tetapi eksekusi diblokir sampai jendela ditutup. Dari utas lain yang saya baca, saya curiga apakah show (block = False) berfungsi atau tidak tergantung pada backend. Apakah ini benar? Bagian belakang saya adalah Qt4Agg. Bisakah Anda melihat kode saya dan memberi tahu saya jika Anda melihat sesuatu yang salah? Ini kode saya. Terima kasih atas bantuannya.
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()
PS. Saya lupa mengatakan bahwa saya ingin memperbarui jendela yang ada setiap kali saya merencanakan sesuatu, alih-alih membuat yang baru.
matplotlib
.
plt.ion()
sebelumnyaplt.show()
? Ini kemudian harus non-blocking karena setiap plot ditelurkan ke thread anak.