Python 3D 图像绘制:解决 `plt.show()` 不显示图片的问题
在 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 图像。
原文地址: https://www.cveoy.top/t/topic/pe7P 著作权归作者所有。请勿转载和采集!