所以我正在阅读matplotlib.animation.FuncAnimation
here的文档,但我很难理解艺术家是什么(是?)。有没有人对此有清晰简洁的答案?
答案 0 :(得分:1)
根据经验,你可以说:你在画布上看到的一切都是艺术家。
正如the artist tutorial所说的那样
matplotlib.artist.Artist
是知道如何使用渲染器绘制到画布上的对象。 [...]艺术家处理所有高级构造,如表示和布置图形,文本和线条。典型的用户将花费95%的时间与艺术家合作。艺术家有两种类型:原语和容器。基元代表我们想要在画布上绘制的标准图形对象:Line2D,Rectangle,Text,AxesImage等,容器是放置它们的位置(轴,轴和图形)。标准用法是创建一个Figure实例,使用Figure创建一个或多个Axes或Subplot实例,并使用Axes实例帮助器方法创建基元。
反过来说,有人可能会说你需要深入挖掘才能遇到不是艺术家的东西。您可以轻松检查某个对象是否是艺术家,
import matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
line, = ax.plot([1,2,3])
scatter = ax.scatter([1,2,3],[2,3,1])
for some_object in [fig,ax,line,scatter]:
print(isinstance(some_object, matplotlib.artist.Artist))
将全部打印True
。
当谈到动画时,你想要制作动画的当然是艺术家。 FuncAnimation
本身不是艺术家(手工操作,因为你在屏幕上看不到它)。
import matplotlib.animation
f = lambda i: line.set_ydata(line.get_ydata()-0.02)
ani = matplotlib.animation.FuncAnimation(fig, f, frames=20)
print(isinstance(ani, matplotlib.artist.Artist)) # prints False
但是它需要一个Figure
作为输入以及一些将操纵一些艺术家属性的功能(否则就不会看到任何动画)。例如。在上文中,line
数据的y坐标在每次迭代中都会改变。