繁体   English   中英

Matplotlib plot 不显示线

[英]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,)

任何人都可以让我知道这是否适用于他们,或者我是否在策划这个错误?

问题是您没有将tu 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM