我通过以下MIT课程研究线性回归:https://www.youtube.com/watch?v=J7DzL2_Na80&list=PLE7DDD91010BC51F8&index=2
在20:52我想用Python制作3D图像。我收到以下错误消息:
“ ValueError:输入操作数的维数超出了轴重新映射所允许的范围”
这是我正在使用的代码:
import matplotlib as mpl
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
mpl.rcParams['legend.fontsize'] = 10
fig = plt.figure()
ax = fig.gca(projection='3d')
z = np.array([[0],[-1.],[4]])
x = np.array([[2.],
[-1.]
[0]])
y = np.array([[-1.],[2.],[-3.]])
ax.plot(x, y, z, label='linear')
ax.legend()
A=np.array([[2.,-1.,0.],
[-1.,2.,-1.],
[0.,-3.,4.]])
b=np.array([[0.],
[-1.],
[4.]])
plt.show()
答案 0 :(得分:0)
您只想绘制3D散点图,下面是使用数据的示例代码。
import numpy, scipy, scipy.optimize
import matplotlib
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm # to colormap 3D surfaces from blue to red
import matplotlib.pyplot as plt
xData = numpy.array([2., -1., 0], dtype=float) # dtype ensures floating point numbers
yData = numpy.array([-1.,2.,-3.], dtype=float)
zData = numpy.array([0, -1., 4], dtype=float)
graphWidth = 800 # units are pixels
graphHeight = 600 # units are pixels
# 3D contour plot lines
numberOfContourLines = 16
def ScatterPlot(data):
f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)
matplotlib.pyplot.grid(True)
axes = Axes3D(f)
x_data = data[0]
y_data = data[1]
z_data = data[2]
axes.scatter(x_data, y_data, z_data)
axes.set_title('Scatter Plot (click-drag with mouse)')
axes.set_xlabel('X Data')
axes.set_ylabel('Y Data')
axes.set_zlabel('Z Data')
plt.show()
plt.close('all') # clean up after using pyplot or else there can be memory and process problems
if __name__ == "__main__":
data = [xData, yData, zData]
ScatterPlot(data)