【问题标题】:Multiplot Animation多情节动画
【发布时间】: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


【解决方案1】:

您有两种解决方案:

  1. 使用人工排序
  2. 在您的数字前添加零,以便获得固定位数。 例如,如果你有这样的标签:

    • 1-file.ext
    • 2-file.ext ...
    • 99-file.ext

    你想拥有类似的东西:

    • 01-file.ext
    • 02-file.ext ...
    • 99-file.ext

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    相关资源
    最近更新 更多