使用matplotlib Python绘制一系列图像
作者:互联网
我正在Python中实现kmeans聚类算法.我想在每次迭代时绘制群集质量的状态(图像).所以,基本上我有一个循环,在每次迭代时绘制一个图像,我想要动画这个.我不知道我是否说清楚了.目前我只是使用show()命令绘制图像,但我必须关闭它才能继续迭代.
那么,是否有某种方法可以动画在每一步计算出的图像序列?
解决方法:
我尝试了ion()方法,它适用于少量数据,但如果你有相对较快的大图像或图像流,这种方法非常慢.根据我的理解,每次更改图形时,ion()都会重绘所有内容,包括轴和标签等.这可能不是您想要的.
This thread显示了一种更好的做事方式
这是一个简单的例子,我展示了如何做到这一点:
import time
import numpy
import matplotlib.pyplot as plt
fig = plt.figure( 1 )
ax = fig.add_subplot( 111 )
ax.set_title("My Title")
im = ax.imshow( numpy.zeros( ( 256, 256, 3 ) ) ) # Blank starting image
fig.show()
im.axes.figure.canvas.draw()
tstart = time.time()
for a in xrange( 100 ):
data = numpy.random.random( ( 256, 256, 3 ) ) # Random image to display
ax.set_title( str( a ) )
im.set_data( data )
im.axes.figure.canvas.draw()
print ( 'FPS:', 100 / ( time.time() - tstart ) )
我用上面的代码在我的机器上得到大约30 FPS.当我用plt.ion()和ax.imshow(数据)而不是im.axes.figure.canvas.draw()和im.set_data(数据)运行相同的东西时,我得到大约1 FPS
标签:python,matplotlib,graphics,cluster-analysis 来源: https://codeday.me/bug/20190621/1250508.html