2013-10-03 4 views
1

내가 plotting multiple plots but whith offset ranges python에서 배운 것을 사용하는 것을 시도하고있다,하지만 난 내 르장 드르 플로팅 코드에 대한 적절한 조정을 할 수없는 것 : 내가 사용하고파이썬 : 같은 창에서 여러 플롯을 플롯

import numpy as np 
import pylab 
from numpy.polynomial.legendre import leggauss, legval 


def f(x): 
    if 0 <= x <= 1: 
     return 1 
    if -1 <= x <= 0: 
     return -1 


f = np.vectorize(f) 

deg = 1000 
x, w = leggauss(deg) # len(x) == deg 
L = np.polynomial.legendre.legval(x, np.identity(deg)) 
integral = (L * (f(x) * w)[None,:]).sum(axis=1) 
xx = np.linspace(-1, 1, 500000) 
csum = [] 


for N in [5, 15, 25, 51, 97]: 
    c = (np.arange(1, N) + 0.5) * integral[1:N] 
    clnsum = (c[:,None] * L[1:N,:]).sum(axis = 0) 
    csum.append(clnsum) 


fig = pylab.figure() 
ax = fig.add_subplot(111) 


for i in csum: 
    ax.plot(x, csum[i]) 


pylab.xlim((-1, 1)) 
pylab.ylim((-1.25, 1.25)) 
pylab.plot([0, 1], [1, 1], 'k') 
pylab.plot([-1, 0], [-1, -1], 'k') 
pylab.show() 

을 은 N = 5, 15, 25, 51, 97에 대해 clnsum의 각 반복을 보유합니다. 그런 다음 각각 저장된 clnsum을 음모로 꾸미기를 원하지만이 문제가 발생하는 곳이라고 생각합니다.

나는

for i in csum: 

올바른 설정을 믿고 있지만 ax.plot(x, csum[i]) 각 반복을 그릴 수있는 잘못된 방법으로해야합니다. 적어도, 이것이 내가 믿는 것입니다.하지만 어쩌면 전체 설정이 잘못되었거나 잘못되었을 수도 있습니다.

각각 N에 대해 각각 clnsum의 플로팅을 얻을 수 있습니까?

답변

2
for i in csum: 
    ax.plot(x, csum[i]) 

여기가 귀하의 문제입니다. 정수가 아니에요, 배열입니다. 당신은 아마 당신은 또한

for y in csum: 
    ax.plot(x, y) 
+0

큰 감사를 할 수

for i in range(len(csum)): 

의미한다. 이러한 옵션 중 하나가 더 효율적입니까? – dustin

+1

후자는 좀 더 "파이썬 적"이고 매우 약간 효율적입니다 (그러나 다루는 숫자는 중요하지 않습니다). –

관련 문제