挖坑,以后還會更新吧
做數學建模畫圖使用了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還是很強大的,有很多的數據圖還沒有用到