Как мне сообщить matplotlib, что я закончил с сюжетом?

StackOverflow https://stackoverflow.com/questions/741877

  •  09-09-2019
  •  | 
  •  

Вопрос

Следующий код отображает два Постскриптум (.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, чтобы он начал заново для второго графика?

Это было полезно?

Решение

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

Другие советы

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

plt.clf()

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

plt.cla()

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

Как указано Дэвидом Курнапо, используйте 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")

Или подсюжет (121) / subplot(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")

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

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

plt.show()

вместо того , чтобы plt.close() или plt.clf().

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top