[英]Matplotlib plot not showing line
我正在尝试 plot 一个简单 ODE 的结果,但曲线未显示在 plot window 中。 请看下面的代码:
import numpy as np
import matplotlib.pyplot as plt
class ForwardEuler_v1(object):
def __init__(self, f, U0, T, n):
self.f, self.U0, self.T, self.n = f, U0, T, n
self.dt = T / float(n)
self.u = np.zeros(n + 1)
self.t = np.zeros(n + 1)
def solve(self):
"""Compute solution for 0 <= t <= T."""
self.u[0] = float(self.U0)
self.t[0] = float(0)
for k in range(self.n):
self.k = k
self.t[k + 1] = self.t[k] + self.dt
self.u[k + 1] = self.advance()
return self.u, self.t
def advance(self):
"""Advance the solution one time step."""
u, dt, f, k, t = self.u, self.dt, self.f, self.k, self.t
u_new = u[k] + dt * f(u[k], t[k])
return u_new
def f(u, t):
return u
solver = ForwardEuler_v1(f, U0=1, T=3, n=15)
u, t = solver.solve()
fig, ax = plt.subplots(1, 1)
ax.plot = (t[0:], u[0:])
plt.show()
solver.solve() 的返回给t
的形状为(16,)
和u
的形状为(16,)
。
任何人都可以让我知道这是否适用于他们,或者我是否在策划这个错误?
问题是您没有将t
和u
arguments 传递给 plot 命令。 目前,您正在为 plot function 分配一个(t, u)
元组,因此您会看到一个空图。
您需要更换线路
ax.plot = (t[0:], u[0:])
经过
ax.plot(t[0:], u[0:])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.