挖坑,以后还会更新吧
做数学建模画图使用了matplotlib和numpy,这里简单总结一下常用的用法
一、数据拟合
1、np.polyfit(x, y, n) 使用n次多项式去拟合x,y散点图,返回各个项的系数
2、np.poly1d(a) 返回一个a数组描述的多项式函数
3、np.linspace(l, r, n) 从l到r上生成n个数(间距相等)
二、二维颜色图的绘画
1、首先需要from matplotlib import colors, ticker, cm
x = np.linspace(l1, r1, n1)
y = np.linspace(l2, r2, n2)
X, Y = np.meshgrid(x, y)
这里
X,Y生成一个像网格的矩阵,X[i][1~n2]都等于x[i], Y[1~n1][i]都等于y[i](用于绘制三维图)
2、然后设置图的格式
fig, ax = plt.subplots() 这里fig是衡量z值的条,ax是三维子图
cs = ax.contourf(X, Y, Z, locator = ticker.LinearLocator(), cmap = cm.PuBu_r)
ticker是指刻度的分割标准,有线性,也有log标准,具体可以参见
https://matplotlib.org/api/ticker_api.html
cmap是配色风格,有很多风格可选
3、添加colorbar和显示
cbar = fig.colorbar(cs)
plt.show()
即可形成一个二维颜色分布图
三、三维图的绘制
1、首先需要from mpl_toolkits.mplot3d.axes3d import Axes3D
并设置一下子图格式
fig = plt.figure(figsize = plt.figaspect(0.5)) (长宽比例)
ax = fig.addsubplot(1, 1, 1, projection='3d') (x, y, z轴显示时的比例,这里为1:1:1)
X,Y同样需要网格化。
2、接下来生成三维平面
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False)
fig.colorbar(surf, shrink=0.5, aspect=10)
rstride为行的步幅,linewidth为线宽,antialiased是抗锯齿开关
然后添加colorbar,分成10份,刻度为每半份一个
3、最后plt.show()即可
4、另一种三维图的样式是plot_wireframe,这个是没有颜色的
四、关于坐标轴
set_xlabel()设置x轴的标识
set_xticks()设置x轴的刻度([]代表无刻度)
先简单做到这里,以后遇到更多的应用会更新吧
不得不说matplotlib还是很强大的,有很多的数据图还没有用到