matplotlib plt.plot()不动态地复制点[重复]

crcmnpdw  于 2023-11-22  发布在  其他
关注(0)|答案(2)|浏览(121)

此问题在此处已有答案

Plots not visible when using a line plot(2个答案)
10天前关闭。
这是我的代码的简化版本。基本上,我想动态地绘制点,但我希望它像一个线图,而不是散点图。我不知道为什么这段代码工作:

from matplotlib import pyplot as plt
import numpy as np

for i in range(10):
    
    x = i
    y = np.random.randint(1,11)
    
    plt.scatter(x,y)
    plt.pause(0.05)
    
    
plt.show()

字符串
但是当我把plt.scatter(x,y)改为plt.plot(x,y)时,图形似乎试图绘制点(因为它明显在移动),但什么也没有显示出来。另一件可能有帮助的事情,我认为这可能与plt.pause(0.05)的使用有关,那就是plt.plot(x, y, 'o-')的结果与plt.scatter(x,y)完全相似。

y4ekin9u

y4ekin9u1#

要在matplotlib中制作动画,我建议使用matplotlib.animation包。在matplotlib官方主页或stackoverflow上可以找到很多例子。下面是我经常使用的一个简单例子:用途:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()
line1, = ax.plot([], [], 'ro')
y=np.random.randint(-20,50,132)
x=np.arange(0,len(y))

fig, ax = plt.subplots()
line, = ax.plot(x, y, color='k')

def update(num, x, y, line):
    line.set_data(x[:num], y[:num])
    line.axes.axis([0, len(y), min(y), max(y)])
    return line,

ani = animation.FuncAnimation(fig, update, len(x), fargs=[x, y, line],
                              interval=60, blit=True)

plt.show()

字符串

wnvonmuf

wnvonmuf2#

plt.plot()没有显示任何内容的原因是你遗漏了语法的一部分--即使没有“pause”命令,它也不起作用。它应该是:

plt.plot(x,y,'.')

字符串
但是,为了动态更新并避免为循环中的每个步骤重新绘制单独的图,您需要正确更新图。请尝试使用此处的方法:
pylab.ion() in python 2, matplotlib 1.1.1 and updating of the plot while the program runs

相关问题