我想使用以下数据在平面上绘制3D图形:
以下是数据框的代码:
df_dict = {'area':[2600, 3000, 3200, 3600, 4000, 4100],
'bedrooms':[3.0, 4.0, 4.0, 3.0, 5.0, 6.0],
'age':[20, 15, 18, 30, 8, 8],
'price':[550000, 565000, 610000, 595000, 760000, 810000]}
df = pd.DataFrame(df_dict)
这些值从熊猫存储在DataFrame中。
另外,等式是:
面积是x1,卧室是x2,年龄是x3。
m1
是112,m2
是23388,而m3
是-3231 b
是221323 我只能执行以下操作:
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')
ax.scatter(df['area'], df['bedrooms'], df['age'], c='r', marker='o')
ax.set_xlabel('area')
ax.set_ylabel('bedrooms')
ax.set_zlabel('age')
plt.show()
即使这样看起来也不正确。如何使用方程式正确绘制平面?
答案 0 :(得分:1)
您希望绘制的回归方程实际上具有3个预测变量和1个目标变量。绘制price
将需要另一个轴,即以4d绘制。在3d模式下绘制平面的简化版本可能是一个不错的起点
from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
def f(area, bedrooms):
return(112*area + 23388*bedrooms + 221323)
n = 6
area = np.linspace(2600, 4100, n)
bedrooms = np.linspace(3, 6, n)
X1, X2 = np.meshgrid(area, bedrooms)
Z = f(X1, X2)
fig = plt.figure(figsize = (12, 8))
ax = plt.axes(projection='3d')
ax.plot_surface(X1, X2, Z, rstride=1, cstride=1, cmap='viridis', edgecolor='none')
ax.set_xlabel('area')
ax.set_ylabel('bedrooms')
ax.set_zlabel('price')
ax.set_title('surface')