2014-03-31 60 views
1

我正在一个项目上工作,我想动画我的一些结果。对于我的项目有很多计算完成,但有一个参数,我想改变。Multiplot Animation

我已经做了一些模拟代码来说明我的问题:

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 
. 
. 
. 

现在在我的搜索,他们是按正确的顺序列出。有没有更好的方法来标记这些文件,甚至是一个更好的方式来做动画整体?最终产品不一定是.gif,只是我可以玩的东西。

+2

这听起来像你只是希望像'文件名= “/path/{:02}_Alpha={:0.3f}.png”。格式(i,alpha [i])'这样你的文件名将是'00_Alpha ...','01_Alpha ...','02_Alpha ...'等,并且会正确排序。 (另外,如果你有100多个步骤,你将会使用'“{:03}”'而不是'“{:02}”')。或者,你可以使用matplotlib的动画模块并输出一个gif或视频直接。 –

+1

+1 @JoeKington关于使用动画模块的说法。不要重新发明轮子;) – tacaswell

回答

0

有两种解决方法:

  1. 使用人的顺序排序
  2. 前面加上零到您的号码有一个数字固定数量。 例如,如果你有这样的标签:

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

    你想拥有是这样的:

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