Tôi không thể tìm ra cách để có được một tiêu đề hoạt hình hoạt động trên một ô FuncAnimation (sử dụng blit). Dựa trên http://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/ và Python/Matplotlib - Quickly Updating Text on Axes, tôi đã tạo một hoạt ảnh nhưng các phần văn bản sẽ không hoạt ảnh. Ví dụ đơn giản:Tiêu đề hoạt ảnh trong matplotlib
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()
Nếu blit=True
bị xóa, văn bản hiển thị, nhưng nó chậm lại. Có vẻ như không thành công với plt.title
, ax.set_title
và ax.text
.
Chỉnh sửa: Tôi đã tìm hiểu lý do tại sao ví dụ thứ hai trong liên kết đầu tiên hoạt động; văn bản nằm trong phần img
. Nếu bạn thực hiện trên 1.005
một .99
, bạn sẽ thấy ý của tôi. Có lẽ là một cách để làm điều này với một hộp bounding, bằng cách nào đó ...
Điều này hoạt động ở tốc độ tối đa! Chúc nó được bao gồm trong matplotlib, so với khỉ vá, nhưng hoạt động tốt! –
@HenrySchreiner Chỉnh sửa của bạn đã được chấp nhận. (Tôi vừa làm lại). Nếu điều này giải quyết được vấn đề của bạn, bạn có thể chấp nhận câu trả lời (hộp kiểm lớn màu xám ở bên trái). – tacaswell
Lý tưởng nhất, hộp giới hạn văn bản nên được sử dụng (vì nó được chuyển từ chức năng hoạt hình), nhưng vì một số lý do nó không được sử dụng (mặc dù tôi nghĩ nó nằm trong các nghệ sĩ). Đây là một hack hợp lý để sửa chữa nó ngay bây giờ. :) Cảm ơn! –