题目
1.用numpy随机生成一元(多元)数据;如线性、指数、三角函数,或者多种样式结合;
2.画出数据散点图和模型曲线。
a)设置xy轴的坐标范围;
b)散点图和模型曲线用不同颜色
代码
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from matplotlib import pyplot as plt
import random
fig = plt.figure()
ax = Axes3D(fig)
x=np.arange(-30,30,1)
y=np.arange(-30,30,1)
x, y = np.meshgrid(x, y)
z=x**2*y+y**2*x
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.plot_surface(x, y, z, cmap='rainbow')
# 散点图
for i in range(0,60):
for j in range(0,60):
x[i][j]=x[i][j]+random.uniform(-5,5)
y[i][j]=y[i][j]+random.uniform(-5,5)
z[i][j]=z[i][j]+random.uniform(-5,5)
# 散线图
# for i in range(0,60):
# x[i]=x[i]+random.uniform(-5,5)
# y[i]=y[i]+random.uniform(-5,5)
# z[i]=z[i]+random.uniform(-5,5)
ax.scatter(x, y, z,marker=".",color="red")
plt.show()
结果
结果上图所示,其中红点为三位平面周围随机生成的散点图。由于二维坐标系下散点图较容易实现,因此我实现了较之更为复杂的三维平面散点图拟合。初始的三维平面方程为 z=xxy+yyx,如下图
由于初始图像为三维平面,既然能够生成一维散点图,那么必然可以生成二维散线图。
在实现过程中,我们通过meshgrid函数实现对x与y坐标的存储,其存储原理如上图。因此我们可以通过然x或y二维数组中每一行加上同样的任意随机数,达到生成随机曲线的目的,最终结果如下图所示。