[英]Python: Strange x axis limits using matplotlib.pyplot
(这里是 Python 新手)作为一个学习练习,我正在尝试解决 plot 解决一个非常简单的 ODE:dy/dt = y with y(0) = 1。我相信我解决 ODE 的代码是正确的,但是plot 的 x 轴限制非常奇怪。 我制作了 50 个等距的 x 值,范围从 0 到 5,但看起来plt.plot()
只绘制前两个点,导致图形看起来像一条线而不是曲线 y = e^x。 我尝试使用plt.plot()
的 'scalex' 和 'scaley' arguments ,我还尝试plt.xlim = (0,5)
及其变体,但无济于事。 我的代码如下(我使用的是 Python 3.7.6):
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
def f(t,y):
return(y)
t0 = np.linspace(0,5,50)
y0 = np.array([1])
#solve_ivp(fun, t_span, y0, args = None)
out = solve_ivp(f, t0, y0)
t_vals = out.t
y_vals = out.y[0,:]
plt.plot(t_vals,y_vals)
这是我得到的 plot:
我确实尝试设置y = np.exp(t0)
,然后绘制 t0 与 y0,这非常有效(即 x 值从 0 到 5)。 所以我不确定为什么我的原始代码没有给我相同类型的图表。 也许我尝试将变量子集out
在某种程度上是不正确的? ...任何帮助,将不胜感激!
通过查看solve_ivp 的文档,您可以看到t_span
应该是浮点数的 2 元组,您可以使用max_step
指定步骤
所以你可以拥有:
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
def f(t,y):
return(y)
out = solve_ivp(f, (0, 5), [1], max_step=0.1)
t_vals = out.t
y_vals = out.y[0,:]
plt.plot(t_vals,y_vals)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.