2014-03-31 104 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