2013-05-21 35 views

Trả lời

15

plt.close() sẽ đóng cửa sổ hình hoàn toàn, trong đó plt.clf() sẽ chỉ xóa hình - bạn vẫn có thể vẽ một ô khác lên đó.

Có vẻ như, đối với nhu cầu của bạn, bạn nên thích plt.clf(), hoặc tốt hơn là giữ một tay cầm trên dòng đối tượng bản thân (họ được trả về trong danh sách bởi plot cuộc gọi) và sử dụng .set_data trên những người trong lần lặp tiếp theo.

1

plt.clf() xóa toàn bộ hình hiện tại bằng tất cả các trục của nó nhưng để cửa sổ mở ra, sao cho cửa sổ có thể được sử dụng lại cho các ô khác.

plt.close() đóng cửa sổ, cửa sổ hiện tại, nếu không được chỉ định khác.

2

Tôi nghĩ đáng lưu ý rằng plt.close() giải phóng bộ nhớ, do đó được ưu tiên khi tạo và lưu nhiều số liệu trong một lần chạy.

Sử dụng plt.clf() trong trường hợp như vậy sẽ tạo ra một cảnh báo sau 20 lô (ngay cả khi họ sẽ không được hiển thị bởi plt.show()):

Hơn 20 con số đã được mở. Các hình được tạo qua giao diện pyplot (matplotlib.pyplot.figure) được giữ lại cho đến khi đóng chặt và có thể tiêu hao quá nhiều bộ nhớ.

Các vấn đề liên quan