Могу ли я генерировать и показывать другое изображение во время каждого цикла с помощью 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) 
  • Создание скриншотов с использованием pyscreenshot
  • В чем разница между «log» и «symlog»?
  • Установите свойства шрифта, чтобы отмечать метки с помощью Matplot Lib
  • Как изменить атрибуты графического графика networkx / matplotlib?
  • Могут ли matplotlib errorbars установить линейный набор?
  • Гистограммы Matplotlib (основные вопросы)
  • Установка шейп-файла / shapelib не найдена через конду или pip
  • как построить произвольные маркеры в серии данных pandas?
  • Python - лучший язык программирования в мире.