在 Python 中使用 matplotlib 库绘制 3D 图像时,常见的错误是 plt.show() 不显示图片。这是因为 plt.show() 函数需要调用其自身来执行显示操作。

以下是错误代码和正确代码的对比:

错误代码:

import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from mpl_toolkits import mplot3d

data = pd.read_csv('cobb_douglas.csv')
model = smf.ols('lny ~ lnk + lnl',data=data)
results = model.fit()

xx = np.linspace(data.lnk.min(),data.max(),100)
yy = np.linspace(data.lnl.min(),data.max(),100)
XX,YY = np.meshgrid(xx,yy)
ZZ = results.params[0]+XX*results.params[1]+YY*results.params[2]

fig = plt.figure
ax = plt.axes(projection = '3d')
ax.scatter(data.lnk,data.lnl,data.lny,c=data.lny)
ax.plot_surface(XX,YY,ZZ)
ax.set_xlabel('lnk')
ax.set_ylabel('lnl')
ax.set_zlabel('lny')
plt.show

正确代码:

import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from mpl_toolkits import mplot3d

data = pd.read_csv('cobb_douglas.csv')
model = smf.ols('lny ~ lnk + lnl',data=data)
results = model.fit()

xx = np.linspace(data.lnk.min(),data.lnk.max(),100)
yy = np.linspace(data.lnl.min(),data.lnl.max(),100)
XX,YY = np.meshgrid(xx,yy)
ZZ = results.params[0]+XX*results.params[1]+YY*results.params[2]

fig = plt.figure()
ax = plt.axes(projection = '3d')
ax.scatter(data.lnk,data.lnl,data.lny,c=data.lny)
ax.plot_surface(XX,YY,ZZ)
ax.set_xlabel('lnk')
ax.set_ylabel('lnl')
ax.set_zlabel('lny')

plt.show()()

注意:

  • 请确保数据文件 cobb_douglas.csv 在当前工作目录下,并且包含正确的数据。
  • 确保你的 Python 环境中已安装 matplotlib 库。

通过以上步骤,你应该能够成功显示你的 3D 图像。

Python 3D 图像绘制:解决 `plt.show()` 不显示图片的问题

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

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