这个警告是由于使用的Matplotlib版本较新,而代码中的'plt.figure()'和'plt.show(block=True)'方法在新版本中已经被弃用。

为了解决这个问题,可以尝试使用'plt.subplots()'方法来创建Figure对象,并使用'plt.show()'方法来显示图形。具体修改如下:

import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

def lorenz(t, xyz, sigma, rho, beta):
    x, y, z = xyz
    dxdt = sigma * (y - x)
    dydt = x * (rho - z) - y
    dzdt = x * y - beta * z
    return [dxdt, dydt, dzdt]

# 设定Lorenz模型的参数值
sigma = 10.0
rho = 28.0
beta = 8.0 / 3.0

# 定义Lorenz模型的初始条件
xyz0 = [1.0, 1.0, 1.0]

# 解Lorenz模型的微分方程
sol = solve_ivp(lorenz, [0, 100], xyz0, args=(sigma, rho, beta), dense_output=True)

# 在时间范围内生成均匀的点
t_eval = np.linspace(0, 100, 10000)

# 根据解的结果计算各个时刻的xyz值
xyz = sol.sol(t_eval)

# 绘制Lorenz模型的混沌吸引子
fig, ax = plt.subplots(subplot_kw={'projection': '3d'})
ax.plot(xyz[0], xyz[1], xyz[2], color='b', linewidth=0.5)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('Lorenz Attractor')
plt.show()

通过使用'plt.subplots(subplot_kw={'projection': '3d'})'来创建带有3D投影的Figure对象,然后使用'ax'对象来进行绘图操作。最后,使用'plt.show()'来显示图形,这样就可以避免警告的出现。

Matplotlib DeprecationWarning: 解决方法及示例代码

原文地址: http://www.cveoy.top/t/topic/5LI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录