Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengemas kini Plot Matplotlib secara Dinamik tanpa Gambar Semula Lengkap?

Bagaimana untuk Mengemas kini Plot Matplotlib secara Dinamik tanpa Gambar Semula Lengkap?

Patricia Arquette
Patricia Arquetteasal
2024-11-13 16:39:02431semak imbas

How to Dynamically Update Matplotlib Plots without Complete Redraws?

Mengemas Kini Plot Secara Dinamik dalam Matplotlib tanpa Lukisan Semula Lengkap

Apabila mengumpul data daripada port bersiri dan merancangnya, terdapat ketidakcekapan yang dikaitkan dengan kemas kini biasa kaedah. Membersihkan dan melukis semula keseluruhan plot atau menggunakan animasi bermasa mungkin tidak praktikal atau menyebabkan kelewatan. Artikel ini membentangkan pendekatan alternatif yang membenarkan kemas kini plot tambahan hanya apabila data baharu diterima.

Kemas Kini Plot Bertambah

Matplotlib menyediakan pelbagai teknik animasi, termasuk Fungsi FuncAnimation. Fungsi ini membolehkan animasi fungsi tertentu dari semasa ke semasa. Dalam kes kami, kami boleh menggunakan fungsi ini untuk menghidupkan proses pemerolehan data.

Melaksanakan Fungsi Kemas Kini

Kaedah animasi melibatkan pengubahsuaian sifat "data" bagi objek yang diplot. Daripada mengosongkan skrin atau rajah, kami hanya boleh melanjutkan sifat data dengan menambahkan titik data baharu pada yang sedia ada. Berikut ialah contoh fungsi yang melakukan ini:

import matplotlib.pyplot as plt
import numpy

hl, = plt.plot([], [])

def update_line(hl, new_data):
    hl.set_xdata(numpy.append(hl.get_xdata(), new_data))
    hl.set_ydata(numpy.append(hl.get_ydata(), new_data))
    plt.draw()

Apabila data baharu tiba dari port bersiri, cuma panggil fungsi update_line dengan data baharu. Ini akan mengemas kini plot secara berperingkat tanpa menanggung overhed untuk melukis semula keseluruhan angka.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Plot Matplotlib secara Dinamik tanpa Gambar Semula Lengkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn