我制作了一个“绘图仪(x)”函数,它读取 a 中的时间序列并返回由两个轴组成pd.DataFrame
的图形( )。return fig
一个是 a pyplot.figure.add_subplot(111)
,我在其中添加descartes.PolygonPatch(shapely.Polygon(y))
-es。第二个是 a pyplot.figure.add_axes
,它包括一个带有自定义颜色图的颜色条。
我需要第二个函数来制作一部电影,以 2 fps 的速率显示时间序列中每个时间步的情节。我这样做了:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def video_plotter(rain_series):
fig = plt.figure()
ims = []
for i in (range(len(rain_series.columns)-1)):
fig = plotter(rain_series[[rain_series.columns[i], rain_series.columns[-1]]])
ims.append([fig])
ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True,repeat_delay=1000)
writer = animation.MencoderFileWriter(fps=2)
ani.save('demo.mp4',writer=writer,dpi=100)
问题1:我应该怎么做才能使这项工作?
我知道一个选项是循环应用我已经必须创建一系列 .png-s 的函数的时间序列,然后直接在 unix 终端中使用 mencoder 创建一个 .avi。然而,颜色条和大多数被映射的形状多边形的值不会随时间而变化,并且每次需要绘制它们时都会消耗大量计算。此外,我需要添加一个mpl_toolkits.basemap.Basemap
也不会改变的。这使得这种“.png-series”方法不方便。我也不能使用sys
导入:我需要在 Python 中做所有事情。
我需要blit=True
在 matplotlib.animation 中使用以避免重绘特征,如果它们在前一个框架中是相同的。它也适用于底图吗?
问题 2:如何在视频中集成静态底图?