matplotlib.pyplot önceki grafikleri unutmayacak - nasıl temizleyebilirim / yenileyebilirim?


89

matplotlib.pyplotÖnceki arsaları nasıl "unutursunuz"

Kullanarak birden çok zaman planlamaya çalışıyorum matplotlib.pyplot

Kod şuna benzer:

def plottest():
    import numpy as np
    import matplotlib.pyplot as plt


    a=np.random.rand(10,)
    b=np.random.rand(10,)
    c=np.random.rand(10,)


    plt.plot(a,label='a')
    plt.plot(b,label='b')
    plt.plot(c,label='c')
    plt.legend(loc='upper left')
    plt.ylabel('mag')
    plt.xlabel('element)')
    plt.show()

    e=np.random.rand(10,)
    f=np.random.rand(10,)
    g=np.random.rand(10,)


    plt.plot(e,label='e')
    plt.plot(f,label='f')
    plt.plot(g,label='g')
    plt.legend(loc='upper left')
    plt.ylabel('mag')
    plt.xlabel('element)')
    plt.show()

Ne yazık ki, ne yaparsam yapayım (aslında bir süre önce çalıştırıp tamamladığım başka bir koddan) aynı arsayı almaya devam ediyorum.

Benzer kod benim için daha önce çalıştı.

Şu sorulara baktım:

Kayrak nasıl temizlenir?

Matplotlib pyplot show () kapatıldıktan sonra çalışmıyor

(python) matplotlib pyplot show () .. bloke mi etmiyor mu?

ve kullanarak çalıştı plt.show(), plt.clf()ve plt.closeboşuna.

Herhangi bir fikir?

Yanıtlar:


114

Kapatıp yeniden açmak yerine, pencere boyutunu korumak ve size daha iyi bir performans ve çok daha iyi bellek kullanımı sağlamak yerine mevcut rakamı temizlemek içinplt.clf() her defasında kullanmayı tercih ederim.plt.show()

Benzer şekilde, plt.cla() sadece mevcut eksenleri temizlemek için de yapabilirsiniz .

Belirli bir eksenleri temizlemek için , bir şekil içinde birden çok ekseniniz olduğunda kullanışlıdır, örneğin şunları yapabilirsiniz:

fig, axes = plt.subplots(nrows=2, ncols=2)

axes[0, 1].clear()

48

Bu davranışın, sorudakine benzer şekilde, yalnızca belirli bir komut dosyası çalıştırıldıktan sonra gerçekleştiğini keşfettim. Neden olduğu hakkında hiçbir fikrim yok.

Çalışır (grafikleri yeniler) koyarsam

plt.clf()
plt.cla()
plt.close()

her şeyden sonra plt.show()

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.