制作3d和2d方程

时间:2019-12-18 16:08:45

标签: python image matplotlib linear-regression

我通过以下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()

1 个答案:

答案 0 :(得分:0)

您只想绘制3D散点图,下面是使用数据的示例代码。

scatterplot

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)