Matplotlib: Làm thế nào để thiết lập con số hiện tại?


83

Đây hy vọng là một câu hỏi đơn giản nhưng tôi không thể tìm ra nó vào lúc này. Tôi muốn sử dụng matplotlib để hiển thị 2 số liệu và sau đó sử dụng chúng một cách tương tác. Tôi tạo các hình với:

import matplotlib
import pylab as pl

f1 = pl.figure()
f2 = pl.figure()

và có thể sử dụng giao diện pyplot giống MATLAB để vẽ và vẽ trong cả hai hình. Với

current_figure = pl.gcf()

Tôi có thể xác định hình hiện đang hoạt động cho giao diện pyplot, tùy thuộc vào hình mà tôi đã nhấp vào. Bây giờ tôi muốn vẽ một cái gì đó vào hình đầu tiên bằng giao diện pyplot nhưng hình hiện tại có thể là một trong hai. Vì vậy, có một cái gì đó như

pl.set_current_figure(figure)

hoặc bất kỳ giải pháp nào? (Tôi biết rằng tôi có thể sử dụng giao diện hướng đối tượng nhưng đối với những thứ tương tác, chỉ cần sử dụng các lệnh như plot (x, y) sẽ đẹp hơn nhiều)

Câu trả lời:


93

Bạn có thể chỉ cần đặt figure f1làm figure hiện tại mới với:

pl.figure(f1.number)

Một tùy chọn khác là đặt tên (hoặc số) cho các số liệu, điều này có thể giúp làm cho mã dễ đọc hơn:

pl.figure("Share values")
# ... some plots ...
pl.figure("Profits")
# ... some plots ...

pl.figure("Share values")  # Selects the first figure again

Trên thực tế, hình "số" có thể là chuỗi, có thể nói rõ ràng hơn là các số đơn giản.

PS : Tương đương với pyplot pylab.figure()matplotlib.pyplot.figure().


1
Có cách nào tốt để thực hiện việc này bằng cách sử dụng matplotlib.figure.Figure thay vì pylab không ??
tylerthemiler 27/12/11

@tylerthemiler: Có, nhưng sẽ có matplotlib.pyplot.figure().
Eric O Lebigot

Nếu bạn muốn làm điều tương tự với các trục, chỉ cần sử dụng pylab.sca(my_axis)("đặt trục hiện tại").
PiHalbe

14

Cho mỗi hình một số:

f1 = pl.figure(1)
f2 = pl.figure(2)
# use f2
pl.figure(1) # make f1 active again
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.