2014-06-30 18 views
9

Tôi đang sử dụng Matplotlib và MPLD3 để tạo các đồ thị có thể được hiển thị trong các trang html (sử dụng django). Hiện tại, đồ thị của tôi đang được tạo động từ dữ liệu được lấy từ tệp csv. Mỗi lần tôi thường nhận được thông báo này trong Thiết bị đầu cuối của mình:Đóng các hình Matplotlib

Thời gian chạyWarning: Hơn 20 hình đã được mở. Các hình được tạo thông qua giao diện pyplot (matplotlib.pyplot.figure) được giữ lại cho đến khi đóng một cách rõ ràng và có thể tiêu tốn quá nhiều bộ nhớ. (Để kiểm soát cảnh báo này, xem rcParam figure.max_num_figures). max_open_warning, RuntimeWarning)

Tôi không thực sự chắc chắn nó có nghĩa là gì, nhưng tôi giả định nó có nghĩa là tôi nên có một số cách để đóng đồ thị mà không được sử dụng. Có anyway để làm điều này hoặc tôi hoàn toàn tắt cơ sở? Cảm ơn.

+8

Không chắc đó là trùng lặp tốt nhất. Câu trả lời ngắn gọn là bạn nên dọn dẹp các ô của mình sau khi bạn đã hoàn thành chúng: 'plt.close (fig)' hoặc 'plt.close ('all')'. – tacaswell

+1

@tcaswell tại sao không thêm câu trả lời này làm câu trả lời? – Korem

Trả lời

2

Hình sẽ tự động được đóng (bằng cách thu gom rác) nếu bạn không tạo chúng thông qua giao diện pyplot. Ví dụ bạn có thể tạo nhân vật sử dụng:

from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas 
from matplotlib.figure import Figure 


def new_fig(): 
    """Create a new matplotlib figure containing one axis""" 
    fig = Figure() 
    FigureCanvas(fig) 
    ax = fig.add_subplot(111) 

    return fig, ax 

(Dựa trên this answer)

7

tôi ưa thích câu trả lời của tacaswell trong các ý kiến, nhưng đã phải tìm kiếm nó.

Dọn dẹp lô của bạn sau khi bạn đã làm xong với họ:

plt.close(fig)

hoặc

plt.close('all')

+3

odd, tôi tự hỏi tại sao không có một 'close()' phương pháp của con số, sau đó. –

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