【发布时间】:2014-05-11 07:07:05
【问题描述】:
我正在做一个项目,我想为我的一些结果制作动画。对于我的项目,完成了很多计算,但我想改变一个参数。
我编写了一些模拟代码来说明我的问题:
import matplotlib.pyplot as plt
import numpy as np
alpha = np.linspace(1, 10, 50)
x = np.linspace(0, 10, 100)
y = x * x
for i in range(len(alpha)):
plt.plot(x, alpha[i] * y)
plt.title("Alpha = " + str(alpha[i]))
plt.xlim(0, 10)
plt.ylim(1, 100)
plt.savefig("./animation_test/" + str(i) + "_Alpha=" + str(alpha[i]) + ".png")
plt.close()
这会在我创建的名为 animation_test 的文件夹中留下我的图像。现在我只想在我的 bash 终端中运行一些东西,比如
$convert -delay 50 * test.gif
制作一个简单的小动画 gif,但我的终端中的排序有点有趣
0_Alpha=1.0.png
10_Alpha=2.83673469388.png
11_Alpha=3.02040816327.png
.
.
.
19_Alpha=4.48979591837.png
1_Alpha=1.18367346939.png
20_Alpha=4.67346938776.png
21_Alpha=4.85714285714.png
.
.
.
现在在我的 Finder 中,它们以正确的顺序列出。有没有更好的方法来标记这些文件,甚至有更好的方法来制作整个动画?最终产品不一定是 .gif,只要是我可以玩的。
【问题讨论】:
-
听起来你只想要
filename = "/path/{:02}_Alpha={:0.3f}.png".format(i, alpha[i])这样的文件名将是00_Alpha...、01_Alpha...、02_Alpha...等,并且会正确排序。 (另外,如果你有超过 100 个步骤,你会想要使用"{:03}"而不是"{:02}"。)或者,你可以使用 matplotlib 的动画模块并直接输出 gif 或视频。 -
+1 @JoeKington 关于使用动画模块的说法。不要重新发明轮子;)
标签: python-2.7 animation matplotlib