python - 使用 matplotlib Python 绘制一系列图像

标签 python graphics matplotlib cluster-analysis

我正在用 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( data ) 而不是 im.axes.figure.canvas.draw()im.set_data( data ),我得到大约 1 FPS

关于python - 使用 matplotlib Python 绘制一系列图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878200/

相关文章:

ios - 如何以编程方式将矢量图像放入 iOS Assets 目录

actionscript-3 - 画一条线: is there exists a limits of thickness in Graphics. lineStyle()?

python - 如何动态消除蓝牙加速度计的噪声?

python - setup.py install 和 setup.py develop 的区别

javascript - 如何以编程方式绘制具有自动图松弛的非线性书写系统(例如在 d3.js 中)?

python - 如何在 matplotlib 中的子图中选取一个点并在相邻子图中突出显示它(点区域的扩展)

Python:填补两个地 block 之间的空白

python - 如何#define if 在 C++ 中类似于 python

javascript - 如何在 typescript/js 中处理 'this' ?需要将Python代码转换为Typescript

python - 将 pandas 条形图的图例与次要 y 轴放在条形图前面