Я пытаюсь использовать то, что я узнал от plotting multiple plots but whith offset ranges python, но я не могу показаться, чтобы сделать соответствующие корректировки для моего Лежандра черчения кода: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()
Я использую csum
провести каждую итерацию clnsum
для N = 5, 15, 25, 51, 97
. Затем я хочу построить каждый сохраненный файл clnsum
, но я считаю, что в этом проблема возникает.
Я считаю
for i in csum:
является правильным набором вверх, но ax.plot(x, csum[i])
должен быть неправильным путем для построения каждой итерации. По крайней мере, это то, во что я верю, но, может быть, все настроено неправильно или ошибочно.
Как достичь графика каждого clnsum
для каждого N
?
Большое спасибо. Является ли один из этих вариантов более эффективным быстрее? – dustin
Последнее более «питоновое» и очень немного более эффективное (но это не имеет значения для числа, с которым вы имеете дело). –