Как мне сказать matplotlib, что я закончил с сюжетом? - PullRequest
139 голосов
/ 12 апреля 2009

Следующий код отображает два PostScript (.ps) файла, но второй содержит обе строки.

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")

Как я могу сказать matplotlib начать заново для второго сюжета?

Ответы [ 6 ]

149 голосов
/ 12 апреля 2009

Существует четкая команда, и она должна сделать это за вас:

plt.clf()

Если у вас есть несколько участков на одном рисунке

plt.cla()

очищает текущие оси.

111 голосов
/ 12 апреля 2009

Вы можете использовать figure, например, для создания нового графика, или close после первого графика.

28 голосов
/ 13 апреля 2009

Как сказано у Дэвида Курнапо, используйте число ().

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")

Или подзаговор (121) / подзаговор (122) для одного и того же участка, в другом положении.

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")
13 голосов
/ 22 марта 2012

Просто введите plt.hold(False) перед первым plt.plot, и вы можете придерживаться своего исходного кода.

7 голосов
/ 16 августа 2016

Если вы используете Matplotlib в интерактивном режиме, например, в веб-приложении (например, ipython), возможно, вы ищете

plt.show()

вместо plt.close() или plt.clf().

0 голосов
/ 10 февраля 2018

Если ни один из них не работает, проверьте это .. скажем, если у вас есть массивы данных x и y вдоль соответствующей оси. Затем проверьте, в какой ячейке (jupyter) вы инициализировали x и y, чтобы очистить. Это потому, что, возможно, вы добавляете данные к x и y без их повторной инициализации. Так что на графике тоже есть старые данные. Так что проверь это ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...