2012-12-03 2 views
2

while 루프의 각 반복의 플롯을 저장하기 위해 파이썬에서 "savefig"를 사용해야합니다. 리터럴 부분과 숫자 부분. 이 배열은 배열에서 나오거나 반복 인덱스에 연결된 숫자입니다. 간단한 예제를 만듭니다.파이썬에서 문자열과 반복 인덱스를 사용하여 savefig를 사용하십시오.

# index.py 

from numpy import * 
from pylab import * 
from matplotlib import * 
from matplotlib.pyplot import * 
import os 

x=arange(0.12,60,0.12).reshape(100,5) 
y=sin(x) 

i=0 

while i<99 
    figure() 
    a=x[:,i] 
    b=y[:,i] 
    c=a[0] 
    plot(x,y,label='%s%d'%('x=',c)) 

    savefig(#???#)  #I want the name is: x='a[0]'.png 
         #where 'a[0]' is the value of a[0] 

감사합니다.

답변

2

글쎄, 그것은 단순히이 있어야한다 :

savefig(str(a[0])) 

이는 장난감 예이다. 나를 위해 일합니다.

import pylab as pl 
import numpy as np 

# some data 
x = np.arange(10) 

pl.figure() 
pl.plot(x) 
pl.savefig('x=' + str(10) + '.png') 
+0

당신은'savefig ('% s.png'% (str (a [0])))'를 원하셨습니까? – mmgp

+0

잘,'savefig (str (a [0]))'는 아무것도 생성하지 않습니다. 'save ('% s.png'% (str (a [0])))')'를 사용하는 것이 옳 습니다만,이 경우 이미지의 이름은 "0.12.png", "0.24.png" , 등등. 나는 이름이 "x = 0.12.png" "x = 0.24.png"등 원하는 도움을 주셔서 다시 한번 감사드립니다. – user1872346

0

나는 최근에 같은 요구를 가지고 해결책을 찾아 냈습니다. 주어진 코드를 수정하고 몇 가지 명시 적 오류를 수정합니다.

from pylab import * 
import matplotlib.pyplot as plt 

x = arange(0.12, 60, 0.12).reshape(100, 5) 
y = sin(x) 
i = 0 

while i < 99: 
    figure() 
    a = x[i, :]     # change each row instead of column 
    b = y[i, :]     

    i += 1      # make sure to exit the while loop 

    flag = 'x=%s' % str(a[0])  # use the first element of list a as the name 
    plot(a, b, label=flag) 
    plt.savefig("%s.png" % flag) 

희망이 있습니다.

관련 문제