Naz*_*mul 4 python matlab matplotlib
我是Matplotlib和Python的新手.我大多使用Matlab.目前,我正在使用Python代码,我想运行一个循环.在每个循环中,我将进行一些数据处理,然后根据处理的数据显示图像.当我进入下一个循环时,我希望关闭先前存储的图像并基于最新数据生成新图像.
换句话说,我想要一个等效于以下Matlab代码的python代码:
x = [1 2 3];
for loop = 1:3
close all;
y = loop * x;
figure(1);
plot(x,y)
pause(2)
end
Run Code Online (Sandbox Code Playgroud)
我尝试了以下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()
Run Code Online (Sandbox Code Playgroud)
此代码将所有图形叠加在同一图中.如果我将plt.show()命令放在for循环中,则只显示第一个图像.因此,我无法在Python中复制我的Matlab代码.
Sam*_*lar 12
试试这个:
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()
_ = input("Press [enter] to continue.")
Run Code Online (Sandbox Code Playgroud)
如果你想关闭之前的情节,在显示下一个情节之前:
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
_ = input("Press [enter] to continue.") # wait for input from the user
plt.close() # close the figure to show the next one.
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23174 次 |
| 最近记录: |