2015-05-07 16 views
5

Vì vậy, tôi có một vài ô mà mã của tôi tạo ra. Tôi muốn cứu tất cả chúng, nhưng tôi chỉ muốn hiển thị một cái. Tôi có thể làm một phần tiết kiệm tốt, nhưng chỉ nhận được một để hiển thị là chứng minh một nỗi đau.Matplotlib - Chỉ hiển thị một hình

Đã tham gia vòng kết nối với cố gắng đạt được điều này. Gần nhất tôi nhận được là để xóa tất cả nhưng một trong những con số, nhưng tất cả chúng được hiển thị khi tôi cố gắng để chỉ hiển thị một. Bắt đầu nghĩ rằng đó là một cái gì đó rất đơn giản, tôi nhìn hoặc nếu không nó không thể.

Bất kỳ ai biết cách đạt được điều này?

Chỉnh sửa: Đã thêm mã mẫu. Xin lỗi vì đã không làm như vậy ban đầu.

fig1 = plt.figure(1) 
    plt.plot([0, 1, 2, 3, 4], [0, 1, 2, 3, 4], label="Test", color='g') 
    plt.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16], label="Other Test", color='r') 
    plt.grid(True) 

    fig1.savefig('Foo1.png') 

    fig2 = plt.figure(2) 
    plt.plot([0, 1, 2, 3, 4], [0, 5, 1, 9, 2], label="Test 2", color='g') 
    plt.plot([0, 1, 2, 3, 4], [0, 10, 50, 0, 10], label="Other Test 2", color='r') 
    plt.grid(True) 

    fig2.savefig('Foo2.png') 

    plt.show() 
+0

Để giúp đỡ, một số mã sẽ giúp đỡ. http://stackoverflow.com/help/mcve – ODiogoSilva

+0

Lời xin lỗi của tôi, tôi đã có ý định làm như vậy nhưng sau đó quyết định vì nó có vẻ là một vấn đề chung chung, nó sẽ không cần thiết. Rõ ràng là tôi đã sai và tôi sẽ cập nhật bài đăng chính. – Steve

+0

Thật không may bạn không thể chỉ 'del' những con số bạn không muốn hiển thị bởi vì mpl giữ lại một tham chiếu. Và thanh toán bù trừ con số không ngăn nó hiển thị. – Alan

Trả lời

9

Bạn có thể đóng mỗi hình ngay sau khi lưu bằng plt.close(). Chỉ cần chắc chắn để không thực hiện một tuyên bố chặt chẽ sau khi con số cuối cùng.

Mã của bạn sẽ trông như thế này:

fig1 = plt.figure(1) 
plt.plot([0, 1, 2, 3, 4], [0, 1, 2, 3, 4], label="Test", color='g') 
plt.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16], label="Other Test", color='r') 
plt.grid(True) 

fig1.savefig('Foo1.png') 
# add plt.close() after you've saved the figure 
plt.close() 

fig2 = plt.figure(2) 
plt.plot([0, 1, 2, 3, 4], [0, 5, 1, 9, 2], label="Test 2", color='g') 
plt.plot([0, 1, 2, 3, 4], [0, 10, 50, 0, 10], label="Other Test 2", color='r') 
plt.grid(True) 

fig2.savefig('Foo2.png') 

plt.show() 
+0

Đó là! Gah, biết tôi đã nhìn thấy một cái gì đó thực sự đơn giản. Tôi nghĩ rằng lệnh plt.close() chỉ có thể hoạt động sau khi hiển thị các ô, không nhận ra nó hoạt động sau khi lưu chúng. Cảm ơn bạn! – Steve

+0

niềm vui của tôi - vui lòng trợ giúp :) – mishaF

+1

Python 2.7 trên Windows: phương pháp này tạo lệnh "không thể gọi" sự kiện: ứng dụng đã bị hủy trong khi thực hiện "sự kiện tạo $ w << ThemeChanged >>" (thủ tục Dòng "ttk :: ThemeChanged" 6) được gọi từ trong số "ttk :: ThemeChanged" – Alan

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