Comment puis-je dire à matplotlib que j'en ai fini avec un complot?

Le code suivant trace deux fichiersPostScript (.ps), mais le second contient les deux lignes.

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.subplot(111)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")


plt.subplot(111)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

Comment puis-je dire à matplotlib de recommencer pour le deuxième tracé?

127
demandé sur Peter Mortensen 2009-04-12 18:40:55

6 réponses

Vous pouvez utiliser figure pour créer une nouvelle parcelle, par exemple, ou utiliser close après la première parcelle.

103
répondu David Cournapeau 2012-02-07 12:04:34

Il y a une commande clear figure, et elle devrait le faire pour vous:

plt.clf()

Si vous avez plusieurs sous-parcelles dans la même figure

plt.cla()

Efface les axes actuels.

140
répondu randlet 2014-03-19 03:05:01

Comme indiqué par David Cournapeau, utilisez figure ().

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.figure()
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")


plt.figure()
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

Ou sous-parcelle (121) / sous-parcelle (122) pour la même parcelle, position différente.

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.subplot(121)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")

plt.subplot(122)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")
28
répondu lmount 2009-04-12 21:44:36

Entrez simplement plt.hold(False) avant le premier plt.terrain, et vous pouvez coller à votre code d'origine.

12
répondu Dirklinux 2012-03-22 10:52:09

Si vous utilisez matplotlib de manière interactive, par exemple dans une application web, (par exemple ipython) vous cherchez peut-être

plt.show()

Au Lieu de plt.close() ou plt.clf().

6
répondu Damo 2017-03-19 11:17:15

Si aucun d'entre eux ne fonctionne, vérifiez ceci.. dites Si vous avez des tableaux x et y de données le long de l'axe respectif. Ensuite, vérifiez dans quelle cellule (jupyter) vous avez initialisé x et y à vider. C'est parce que , peut-être que vous ajoutez des données à x et y sans les réinitialiser. Donc, l'intrigue a aussi de vieilles données. Vérifiez donc que..

0
répondu Seenivasan 2018-02-10 12:45:53