web-dev-qa-db-fra.com

Est-il possible d'afficher plusieurs parcelles dans des fenêtres séparées à l'aide de matplotlib?

Bonjour, je trace une fonction 10 fois et affiche également les valeurs séparées. Je voulais aussi tracer les 10 cas séparément dans des fenêtres séparées. 

J'ai donc créé un nouveau for loop pour le traçage, qui ne traite que la première instance. Une fois le premier fermé, je ne peux voir que le second.

J'ai aussi essayé d'utiliser plt.hold(true).

Voici ce que j'ai essayé de faire-

def signal():
    t1 = np.random.choice(candidates)
    t2 = np.random.choice(candidates)
    t3 = np.random.choice(candidates)
    t4 = np.random.choice(candidates)
    t5 = np.random.choice(candidates)
    y = a * np.exp(-t /t1) + a * np.exp(-t /t2) + a * np.exp(-t /t3) + a * np.exp(-t /t4) + a * np.exp(-t /t5)
return y

for i in range(nsets):
    signalset = []
    signalset.append(signal())
    print(signal())

for i in range (nsets):
    plt.plot(t, signal())
    plt.show()
    plt.hold(True)

Est-il possible de générer 10 parcelles simultanément dans 10 fenêtres différentes?

8
zerogravty

Les chiffres ont un index plt.figure(n)n est un nombre commençant par1.
Cela permet d’activer ultérieurement une figure déjà créée pour y tracer de nouveaux éléments, mais cela permet également de créer plusieurs figures dans une boucle.

Pour afficher toutes les images simultanément, utilisez plt.show () à la toute fin.
Dans ce cas, vous feriez

for i in range(10):
    plt.figure(i+1) #to let the index start at 1
    plt.plot(t, signal())
plt.show()

Cela crée les 10 fenêtres à la fin du script.

9

Vous pouvez créer de nouvelles fenêtres de figures en spécifiant un nouvel index de figures, par exemple plt.figure(10). Dans votre cas, vous pouvez utiliser:

for i in range (nsets):
    plt.figure(i) # choose figure i to be the current figure (create it if not already existing)
    plt.plot(t, signal())
    plt.show()
    plt.hold(True)
1
Julien