Mengemas kini Plot dalam Matplotlib untuk Tkinter
Anda telah menghadapi kesukaran untuk mengemas kini plot dalam Matplotlib dalam aplikasi Tkinter. Anda membenarkan pengguna melaraskan unit skala masa, yang memerlukan pengiraan semula dan mengemas kini plot tanpa membuat plot baharu.
Pendekatan 1: Membersihkan dan Meplot Semula
Secara mudah kaedahnya ialah mengosongkan plot sedia ada dengan memanggil graph1.clear() dan graph2.clear(), kemudian replot data. Walaupun ia lebih mudah, ia juga lebih perlahan.
Pendekatan 2: Mengemas kini Data Plot
Pendekatan alternatif, yang jauh lebih pantas, melibatkan pengemaskinian data objek plot sedia ada. Ini memerlukan sedikit pelarasan kod anda:
def plots(): global vlgaBuffSorted cntr() result = collections.defaultdict(list) for d in vlgaBuffSorted: result[d['event']].append(d) result_list = result.values() f = Figure() graph1 = f.add_subplot(211) graph2 = f.add_subplot(212, sharex=graph1) # Create plot objects vds_line, = graph1.plot([], [], 'bo', label='a') vgs_line, = graph1.plot([], [], 'rp', label='b') isub_line, = graph2.plot([], [], 'b-', label='c') for item in result_list: # Update plot data vds_line.set_data([], []) vgs_line.set_data([], []) isub_line.set_data([], []) tL = [] vgsL = [] vdsL = [] isubL = [] for dict in item: tL.append(dict['time']) vgsL.append(dict['vgs']) vdsL.append(dict['vds']) isubL.append(dict['isub']) # Update plot data vds_line.set_data(tL, vdsL) vgs_line.set_data(tL, vgsL) isub_line.set_data(tL, isubL) # Draw the plot f.canvas.draw() f.canvas.flush_events()
Dalam pendekatan ini, anda mencipta objek plot (cth., vds_line), kemudian mengemas kini datanya dengan setiap lelaran. Kaedah draw() dan flush_events() digunakan untuk memaparkan plot yang dikemas kini pada tetingkap Tkinter.
Dengan memilih pendekatan yang sesuai, anda boleh mengemas kini plot dalam Matplotlib dengan berkesan dalam aplikasi Tkinter anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas kini Plot Matplotlib dengan Cekap dalam Aplikasi Tkinter Selepas Menukar Skala Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!