我无法弄清楚如何在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,你会明白我的意思.可能有一种方法可以使用边界框执行此操作,不知何故......
每次我通过一个适合的程序,我试图刷新我在gui中的一些情节.此外,这些图是在可以调整大小的framw内,因此在调整大小后需要重新绘制轴和标签等.所以,想知道是否有人知道如何使用类似更新图的两侧plot.figure.canvas.copy_from_bbox和blit.这似乎只复制和blit图形区域的背景(绘制线条的位置),而不是图形或图形的边(标签和刻度线的位置).我一直试图让我的图表通过反复试验和读取mpl文档进行更新,但到目前为止,我的代码已经变得非常复杂,例如self.this_plot.canvas_of_plot..etc.etc.. .plot.figure.canvas.copy_from_bbox......这可能太复杂了.我知道我的语言可能有些偏差,但我一直在尝试阅读matplotlb文档,图,画布,图形,情节,图形等之间的差异开始躲避我.所以我的首要问题是:
1 - 如何更新matplotlib图周围的刻度和标签.
其次,既然我想更好地掌握这个问题的答案,
2 - 关于它们在GUI中覆盖的区域,绘图,图形,画布等之间有什么区别.
非常感谢你的帮助.
我有一个matplotlib axes实例,我正在为一个AxesImage通过动画制作动画blit.
我想做的是为x轴上的刻度设置动画.我正在更新AxesImage上的数据(以及随后)非常频繁地绘制它的艺术家,并且在每次更新时我想移动一个额外的刻度以突出显示某些东西的位置.这就是我现在正在做的事情:
axis = axes.get_xaxis
im.set_data(new_data)
axis.set_ticks([10,20,30,x,t])
axis.set_ticklabels(["p", "u", "z", "z", "i"])
axes.draw_artist(im)
axes.draw_artist(axis)
Run Code Online (Sandbox Code Playgroud)
虽然我看到刻度线正确更新,但标签不是.我认为轴bbox不包括轴,这可能吗?如果是这样,我该如何设置它的动画?我应该从其他地方复制和恢复吗?