【发布时间】:2022-03-27 01:59:58
【问题描述】:
我想使用matplotlib 制作动画以进行PowerPoint 演示。动画应该只播放一次。
在我的代码中,FuncAnimation() 的参数 repeat 设置为 false。
因为我需要将图导入到PowerPoint中,所以我使用ani.save('test.gif')保存了它。
问题是当我打开保存的 test.gif 图形时,线图一直在循环。
Stackoverflow 上的所有搜索都建议使用repeat=False,或使用PillowWriter。这两种解决方案都不适合我,所以我有两个问题:
- 为什么保存的图会忽略
repeat=False? - 我该如何解决这个问题?
提前感谢您帮助我。 请在下面找到我的代码:
import pandas as pd
import matplotlib.pyplot as plt
# import matplotlib.animation as animation
from matplotlib.animation import FuncAnimation, PillowWriter
df = pd.DataFrame(
{
"x": {
0: 0,
1: 1,
2: 2,
3: 3,
4: 4,
5: 5,
6: 6,
7: 7,
8: 8,
9: 9,
10: 10,
11: 11,
12: 12,
13: 13,
14: 14,
15: 15,
16: 16,
17: 17,
18: 18,
19: 19,
20: 20,
21: 21,
22: 22,
23: 23,
24: 24,
25: 25,
26: 26,
27: 27,
28: 28,
29: 29,
30: 30,
31: 31,
32: 32,
33: 33,
34: 34,
35: 35,
36: 36,
37: 37,
38: 38,
39: 39,
40: 40,
41: 41,
42: 42,
43: 43,
44: 44,
45: 45,
46: 46,
47: 47,
48: 48,
49: 49,
50: 50,
},
"y": {
0: 0.7695,
1: 0.7983,
2: 0.7958,
3: 0.7975,
4: 0.7983,
5: 0.7966,
6: 0.7971,
7: 0.7962,
8: 0.7962,
9: 0.7975,
10: 0.7983,
11: 0.7987,
12: 0.7996,
13: 0.7992,
14: 0.7967,
15: 0.7983,
16: 0.7971,
17: 0.7987,
18: 0.7979,
19: 0.7983,
20: 0.7983,
21: 0.7921,
22: 0.7975,
23: 0.7962,
24: 0.7975,
25: 0.7979,
26: 0.7983,
27: 0.7992,
28: 0.7983,
29: 0.7983,
30: 0.7987,
31: 0.7983,
32: 0.7983,
33: 0.7983,
34: 0.7992,
35: 0.7975,
36: 0.7996,
37: 0.7992,
38: 0.7979,
39: 0.7987,
40: 0.7983,
41: 0.7983,
42: 0.7987,
43: 0.7987,
44: 0.7992,
45: 0.7992,
46: 0.7979,
47: 0.7996,
48: 0.7992,
49: 0.7987,
50: 0.7992,
},
}
)
x = df["x"]
y = df["y"]
fig, ax = plt.subplots()
line, = ax.plot(x, y, color="b")
def update(num, x, y, line):
line.set_data(x[:num], y[:num])
return (line,)
ani = FuncAnimation(
fig, update, len(x), fargs=[x, y, line], interval=15, blit=True, repeat=False
)
# ani.save('test.gif')
ani.save("test2.gif", dpi=80, writer=PillowWriter(fps=5))
plt.show()
【问题讨论】:
-
我认为这是 powerpoint 的问题。我相信它会继续循环播放您放入其中的任何 GIF?
-
问题是我还没有将 test.gif 文件导入到 powerpoint 中。只需双击,情节就会无穷无尽。
-
我可能错了,但我认为 GIF 不会对它们是否应该循环进行编码,所以这不是 matplotlib 能够解决的问题。就像您的照片查看器正在选择是否循环播放一样。尝试将绘图保存为
.mp4
标签: python matplotlib animation