Tôi đã chơi với Numpy và matplotlib trong vài ngày qua. Tôi đang gặp vấn đề khi cố gắng biến matplotlib thành một hàm mà không chặn thực thi. Tôi biết đã có nhiều chủ đề ở đây trên SO hỏi những câu hỏi tương tự, và tôi đã googled khá nhiều nhưng không quản lý để làm cho công việc này.
Tôi đã thử sử dụng show (block = false) như một số người đề xuất, nhưng tất cả những gì tôi nhận được là một cửa sổ đóng băng. Nếu tôi chỉ đơn giản gọi show (), kết quả được vẽ đúng nhưng thực thi bị chặn cho đến khi cửa sổ được đóng lại. Từ các chủ đề khác mà tôi đã đọc, tôi nghi ngờ rằng liệu chương trình (khối = Sai) có hoạt động hay không phụ thuộc vào phụ trợ. Điều này có đúng không? Mặt sau của tôi là Qt4Agg. Bạn có thể xem mã của tôi và cho tôi biết nếu bạn thấy có gì đó không đúng? Đây là mã của tôi. Cảm ơn vì bất kì sự giúp đỡ.
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()
Tái bút Tôi quên nói rằng tôi muốn cập nhật cửa sổ hiện có mỗi khi tôi vẽ một cái gì đó, thay vì tạo một cái mới.
matplotlib
.
plt.ion()
trước đâyplt.show()
chưa? Sau đó, nó sẽ không bị chặn vì mỗi âm mưu được sinh ra thành một chuỗi con.