Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mencapai Plotting Tidak Menyekat dengan Bahagian Belakang Qt4Agg Matplotlib?

Bagaimana untuk Mencapai Plotting Tidak Menyekat dengan Bahagian Belakang Qt4Agg Matplotlib?

Susan Sarandon
Lepaskan: 2024-11-03 08:32:02
asal
239 orang telah melayarinya

How to Achieve Non-Blocking Plotting with Matplotlib's Qt4Agg Backend?

Plot Tanpa Penyekatan dengan Matplotlib

Dalam Matplotlib, pelaksanaan menyekat sering berlaku apabila memplot fungsi. Ini boleh menghalang aplikasi interaktif yang memerlukan kemas kini masa nyata. Untuk menangani isu ini, adalah penting untuk memahami cara hujung belakang mempengaruhi tingkah laku menyekat dan memanfaatkan teknik yang sesuai untuk plot tanpa sekatan.

Kesan Backend pada Pelaksanaan Penyekatan

Matplotlib menggaji pelbagai bahagian belakang untuk pemaparan GUI. Walaupun sesetengah bahagian belakang, seperti Qt4Agg, menyokong perancangan tanpa sekatan, yang lain tidak. Ini bermakna penggunaan show(block=False) boleh mengakibatkan tetingkap beku atau tingkah laku yang salah bergantung pada bahagian belakang yang dipilih.

Peperiksaan Kod

Memeriksa kod yang disediakan, penggunaan show(block=False) sememangnya nampaknya menjadi punca di sebalik isu tetingkap beku. Ini kerana bahagian belakang Qt4Agg tidak menyokong mod menyekat untuk aplikasi bukan GUI.

Teknik Memplot Tanpa Menyekat

Untuk mencapai plot tanpa menyekat dalam Qt4Agg, adalah disyorkan untuk menggunakan pendekatan berikut:

  1. Invoke plt.ion() untuk mendayakan mod interaktif, yang membolehkan kawalan manual melukis semula.
  2. Panggil plt.show() tanpa menyatakan block=False. Ini memaparkan tetingkap plot tanpa menyekat pelaksanaan.
  3. Gunakan plt.pause(0.001) atau kelewatan yang serupa untuk memberikan masa untuk plot itu dipaparkan sebelum meneruskan. Kelewatan yang ditentukan boleh dilaraskan berdasarkan kekerapan kemas kini yang diingini.

Berikut ialah versi terkini kod anda yang melaksanakan teknik tidak menyekat ini:

<code class="python">import numpy as np
from matplotlib import pyplot as plt

def main():
    plt.axis([-50,50,0,10000])
    plt.ion()
    plt.show()

    x = np.arange(-50, 51)
    for pow in range(1,5):   # plot x^1, x^2, ..., x^4
        y = [Xi**pow for Xi in x]
        plt.plot(x, y)
        plt.draw()
        plt.pause(0.001)  # Adjust this delay based on desired update frequency
        input("Press [enter] to continue.")

if __name__ == '__main__':
    main()</code>
Salin selepas log masuk

Dengan melaksanakan pengubahsuaian ini , kod tersebut akan membenarkan plot tanpa menyekat tanpa membuat tetingkap baharu untuk setiap kemas kini.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Plotting Tidak Menyekat dengan Bahagian Belakang Qt4Agg Matplotlib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan