Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách tạm dừng figure Matplotlib cho đến khi nhấn phím hoặc click chuột


Dùng sự kiện button_press_event để tạm dừng animation. Bật chế độ tương tác plt.ion(), dùng backend TkAgg.

  • Set backend TkAgg, bật interactive mode.
  • Biến pause điều khiển vòng lặp.
  • Hàm onclick đảo giá trị pause khi click chuột.
  • Vòng lặp while vẽ luân phiên sin/cos khi không pause.

Ví dụ minh họa

import matplotlib
from matplotlib import pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

matplotlib.use("TkAgg")
plt.ion()
fig = plt.figure()
pause = False

def onclick(event):
    global pause
    pause = not pause

fig.canvas.mpl_connect('button_press_event', onclick)

data = np.linspace(-10, 10, 100)
x = np.sin(data)
y = np.cos(data)
flag = 1
while True:
    if not pause:
        if flag == 1:
            fig.clear()
            plt.plot(data, y, color='red')
            flag = 0
        else:
            fig.clear()
            plt.plot(data, x, color='yellow')
            flag = 1
    fig.canvas.get_tk_widget().update()

Kết quả đầu ra

Đồ thị sin/cos luân phiên, click chuột để tạm dừng.

Cách tạm dừng figure Matplotlib cho đến khi nhấn phím hoặc click chuột