Могу ли я генерировать и показывать другое изображение во время каждого цикла с помощью Matplotlib?

Я новичок в Matplotlib и Python. Я в основном использую Matlab. В настоящее время я работаю с кодом Python, где я хочу запустить цикл. В каждом цикле я сделаю некоторую обработку данных, а затем покажу изображение на основе обработанных данных. Когда я перехожу к следующему циклу, я хочу, чтобы ранее сохраненное изображение было закрыто и создало новое изображение на основе последних данных.

Другими словами, я хочу, чтобы код python был эквивалентен следующему коду Matlab:

x = [1 2 3]; for loop = 1:3 close all; y = loop * x; figure(1); plot(x,y) pause(2) end 

Я попытался использовать следующий код на Python для достижения своей цели:

 import numpy as np import matplotlib import matplotlib.lib as plt from array import array from time import sleep if __name__ == '__main__': x = [1, 2, 3] for loop in range(0,3): y = numpy.dot(x,loop) plt.plot(x,y) plt.waitforbuttonpress plt.show() 

Этот код помещает все графики, наложенные на один и тот же рисунок. Если я положил команду plt.show() внутри цикла for, будет показано только первое изображение. Поэтому я не смог бы повторить мой код Matlab в Python.

One Solution collect form web for “Могу ли я генерировать и показывать другое изображение во время каждого цикла с помощью Matplotlib?”

попробуй это:

 import numpy from matplotlib import pyplot as plt if __name__ == '__main__': x = [1, 2, 3] plt.ion() # turn on interactive mode for loop in range(0,3): y = numpy.dot(x, loop) plt.figure() plt.plot(x,y) plt.show() _ = raw_input("Press [enter] to continue.") 

если вы хотите закрыть предыдущий график, перед тем как показывать следующий:

 import numpy from matplotlib import pyplot as plt if __name__ == '__main__': x = [1, 2, 3] plt.ion() # turn on interactive mode, non-blocking `show` for loop in range(0,3): y = numpy.dot(x, loop) plt.figure() # create a new figure plt.plot(x,y) # plot the figure plt.show() # show the figure, non-blocking _ = raw_input("Press [enter] to continue.") # wait for input from the user plt.close() # close the figure to show the next one. 

plt.ion() включает интерактивный режим, делающий plt.show без блокировки.

и heres является дубликатом вашего кода matlab:

 import numpy import time from matplotlib import pyplot as plt if __name__ == '__main__': x = [1, 2, 3] plt.ion() for loop in xrange(1, 4): y = numpy.dot(loop, x) plt.close() plt.figure() plt.plot(x,y) plt.draw() time.sleep(2) 
  • Построение графика mplot3d / axes3D xyz с масштабом логарифма?
  • Разница между положительными и отрицательными значениями в xticklabel с использованием латекса в matplotlib
  • диаграммы matplotlib с осью 2 y
  • Ошибка значения с цветовой матрицей при разрезании значений для графика рассеяния
  • Аннотирование точек из кадра данных Pandas в графике Matplotlib
  • Добавление одного и того же экземпляра Patch к нескольким подсети в matplotlib
  • Matplotlib: одна строка, построенная по двум смежным осям x в разных единицах?
  • Установка numpoints в легенде matplotlib не работает
  • Линейная регрессия с использованием scipy.ODR не выполняется (не полный ранг в решении)
  • Существует класс matplotlib.axes.AxesSubplot, но модуль matplotlib.axes не имеет атрибута AxesSubplot
  • сопоставить цветную панель с матричным графом
  • Python - лучший язык программирования в мире.