hành vi Weird, tôi chắc chắn đó là tôi Screwing lên, nhưng tôi muốn tìm hiểu tường tận về những gì đang xảy ra:Python Matplotlib treo khi được yêu cầu vẽ một biểu đồ thứ hai (sau khi đóng đầu tiên cửa sổ biểu đồ)
tôi đang chạy đoạn mã sau để tạo ra một cửa sổ đồ thị rất đơn giản sử dụng matplotlib:
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> ax.plot((1, 3, 1))
[<matplotlib.lines.Line2D object at 0x0290B750>]
>>> plt.show()
và như mong đợi tôi nhận được bảng xếp hạng một trong mong đợi, trong một cửa sổ mới mà đã xuất hiện bất ngờ, chứa một dòng màu xanh rất đơn giản đi từ 1 đến 3 trở lại 1 trên trục y, với 0, 1, 2 là các điểm trục x (giống như ví dụ). Bây giờ tôi đóng cửa sổ đồ thị (sử dụng nút chéo ở trên cùng bên phải dưới cửa sổ). Điều này cho phép tôi kiểm soát để người phiên dịch, và tôi bắt đầu một lần nữa, tạo ra các đối tượng mới:
>>>
>>> fig1 = plt.figure()
>>> bx = fig1.add_subplot(111)
>>> bx.plot((1, 3, 1))
[<matplotlib.lines.Line2D object at 0x029E8210>]
>>> plt.show()
thời gian này mặc dù, tôi nhận được một khung cửa sổ, không có gì trong đó (chỉ là khung, không có nền trắng không có gì), và toàn bộ vụ nổ súng bị treo. Tôi phải "kết thúc nhiệm vụ", trình thông dịch python được chấm dứt bởi hệ thống và tôi nhận được một dấu nhắc lệnh trở lại. Hành vi tương tự trên một mac (ngoại trừ nó thực sự âm mưu đồ thị đầu tiên, trước khi cũng treo).
Vì vậy, bằng cách nào đó Python và/hoặc matplotlib không muốn tôi đóng cửa sổ theo cách thủ công. Có ai biết chuyện gì đang xảy ra và tôi nên làm gì không? Những gì tôi muốn làm là chơi xung quanh với các lô khác nhau từ bên trong thông dịch viên, và rõ ràng hành vi này không giúp ích gì. Tôi biết tôi có thể sử dụng "Ipython -pylab" nhưng vì lợi ích của việc học, tôi muốn hiểu lỗi trên.
Cảm ơn. bạn
tôi có bây giờ Casey, nhưng không có sự thay đổi. Khi tôi gọi plt.show(), nó cho thấy cửa sổ đồ thị của trình thông dịch Python không còn sử dụng, nghĩa là tôi không có lời nhắc. Chỉ khi tôi đóng cửa sổ, tôi mới nhận được lời nhắc. Nếu sau đó tôi gọi plt.close() và sau đó tiếp tục, nó hoạt động theo cùng một cách, tức là treo cứng. Bắt cảm giác (đào xung quanh trang web Matplotlib) rằng về cơ bản họ muốn bạn dính vào iPython ở chế độ -pylab. –
thử tải xuống scipy, nếu bạn chưa có và nhập pylab. nó hoạt động giống như matplotlib. – Nope
Không - không có gì. Nếu nhập khẩu pylab, và làm tất cả các bên trên, cư xử trong chính xác theo cùng một cách. –