我无法弄清楚如何在FuncAnimation图(使用blit)上获得动画标题.基于http://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/和Python/Matplotlib - 快速更新Axes上的文本,我已经构建了一个动画,但文本部分刚赢了没有动画.简化示例:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
vls = np.linspace(0,2*2*np.pi,100)
fig=plt.figure()
img, = plt.plot(np.sin(vls))
ax = plt.axes()
ax.set_xlim([0,2*2*np.pi])
#ttl = ax.set_title('',animated=True)
ttl = ax.text(.5, 1.005, '', transform = ax.transAxes)
def init():
ttl.set_text('')
img.set_data([0],[0])
return img, ttl
def func(n):
ttl.set_text(str(n))
img.set_data(vls,np.sin(vls+.02*n*2*np.pi))
return img, ttl
ani = animation.FuncAnimation(fig,func,init_func=init,frames=50,interval=30,blit=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
如果blit=True删除,文本会显示,但速度会慢下来.这似乎失败plt.title,ax.set_title和ax.text.
编辑:我发现为什么第一个链接中的第二个例子有效; 文本在img部分内部.如果你做上面的1.005a .99,你会明白我的意思.可能有一种方法可以使用边界框执行此操作,不知何故......
我有这个简单的python脚本使用OpenCV从文件夹加载图像并在循环中显示它们.我想用这个效果重现这个效果matplotlib.
import cv2 as cv
import os
im_files = [for f in os.listdir('.') if f[-3:] == 'png']
for f in im_files:
im = cv.imread(f, 0) #read image in greyscale
cv.imshow('display', im)
cv.waitKey(1)
cv.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
我尝试了以下脚本,但打开以显示图表的pyplot窗口变得无法响应.
import pylab as pl
import os
files = [f for f in os.listdir('.') if f[-3:] == 'png']
pl.ion()
for f in files:
im=pl.imread(f)
pl.imshow(im)
pl.draw()
Run Code Online (Sandbox Code Playgroud)
我google了很多但找不到任何解决方案.我该怎么做呢?我在Windows 8上使用Anaconda 1.6 32bit.