编程语言
首页 > 编程语言> > 使用matplotlib Python绘制一系列图像

使用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