寫在前面:import numpy as np import matplotlib.pylab as mp 因此文章中的np就代表numpy庫,mp就代表pylab繪圖庫 一、三維立體圖像1、三維線框格式:ax.plot_wireframe(x, y, z, rstride=行距, cstrid=列距, linewidth=線寬, color=顏色) 測試代碼:
import numpy as npimport matplotlib.pylab as mpfrom mpl_toolkits.mplot3d import axes3d
n = 1000# 柵格化:兩組1000個(gè)-3到3的一維數(shù)組成x和y,會(huì)形成1000*1000個(gè)焦點(diǎn)的二維數(shù)組x, y = np.meshgrid(np.linspace(-3, 3, n), np.linspace(-3, 3, n))# uniform:均勻分布,每個(gè)隨機(jī)數(shù)概率一樣在0.5和1.0之內(nèi)產(chǎn)生n個(gè)隨機(jī)數(shù)y1 = (1 - x/n) * np.random.uniform(0.5, 1.0, n) # (1 - x/n)為了方便顯示y2 = (1 - x/n) * np.random.uniform(0.5, 1.0, n)z = (1 - x/2 + x**5 + y**3) * np.exp(-x**2 - y**2)# 換行做運(yùn)算需要用\隔開,exp是底數(shù)為x指數(shù)是-x**2 - y**2# 圖像屬性mp.figure('3D Wireframe')# 創(chuàng)建3D坐標(biāo)軸ax = mp.gca(projection='3d')mp.title('3D Wireframe', fontsize=20) # 圖像標(biāo)題# X、Y、Z坐標(biāo)軸文本ax.set_xlabel('X', fontsize=14)ax.set_ylabel('Y', fontsize=14)ax.set_zlabel('Z', fontsize=14)mp.tick_params(labelsize=10) # 刻度標(biāo)簽大小# 繪制三維線框圖像ax.plot_wireframe(x, y, z, rstride=30, cstride=30, linewidth=0.5, color='orangered')mp.show()1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
測試效果 
2、三維曲面格式:ax.plot_surface(x, y, z, rstride=行距, cstrid=列距, cmap=顏色映射) 測試代碼:
import numpy as npimport matplotlib.pylab as mpfrom mpl_toolkits.mplot3d import axes3d
n = 1000# 柵格化:兩組1000個(gè)-3到3的一維數(shù)組成x和y,會(huì)形成1000*1000個(gè)焦點(diǎn)的二維數(shù)組x, y = np.meshgrid(np.linspace(-3, 3, n), np.linspace(-3, 3, n))# uniform:均勻分布,在0.5和1.0之內(nèi)產(chǎn)生n個(gè)隨機(jī)數(shù)y1 = (1 - x/n) * np.random.uniform(0.5, 1.0, n) # (1 - x/n)為了方便顯示y2 = (1 - x/n) * np.random.uniform(0.5, 1.0, n)z = (1 - x/2 + x**5 + y**3) * np.exp(-x**2 - y**2)# 換行做運(yùn)算需要用\隔開,exp是底數(shù)為x指數(shù)是-x**2 - y**2# 圖像屬性mp.figure('3D Surface')# 創(chuàng)建3D坐標(biāo)軸ax = mp.gca(projection='3d')mp.title('3D Surface', fontsize=20) # 圖像標(biāo)題# X、Y、Z坐標(biāo)軸文本ax.set_xlabel('X', fontsize=14)ax.set_ylabel('Y', fontsize=14)ax.set_zlabel('Z', fontsize=14)mp.tick_params(labelsize=10) # 刻度標(biāo)簽大小# 繪制三維線框圖像:行距列距越小,畫的圖越密集ax.plot_surface(x, y, z, rstride=10, cstride=10, cmap='jet')mp.show()123456789101112131415161718192021222324252627282930313233343536123456789101112131415161718192021222324252627282930313233343536 測試效果: 
3、三維散點(diǎn)格式:ax.scatter(x, y, z, s=大小, c=顏色, marker=點(diǎn)型) 測試代碼:
import numpy as npimport matplotlib.pylab as mpfrom mpl_toolkits.mplot3d import axes3d# 獲得1000個(gè)使用隨機(jī)作為服從正態(tài)分布的數(shù)據(jù)樣本(數(shù)組)n = 1000x = np.random.normal(0, 1, n) # 一參為標(biāo)準(zhǔn)差,二參為分布平坦性(越大越分散,越小越集中),三參為點(diǎn)的個(gè)數(shù)y = np.random.normal(0, 1, n)z = np.random.normal(0, 1, n)d = np.sqrt(x ** 2 + y ** 2 + z ** 2) # 根號(hào)下 x平方加y平方 作為點(diǎn)到正態(tài)中心的距離# 繪制圖像mp.figure('Scatter 3D')ax = mp.gca(projection='3d')mp.title('Scatter 3D', fontsize=20) # 圖像標(biāo)題ax.set_xlabel('X', fontsize=14) # X、Y刻度顯示的文本ax.set_ylabel('Y', fontsize=14)ax.set_zlabel('Z', fontsize=14)mp.tick_params(labelsize=10) # 刻度標(biāo)簽大小ax.scatter(x, y, z, s=60, c=d, cmap='jet_r', alpha=0.5, marker='*') # marker常用D,*,s,默認(rèn)圓點(diǎn)omp.show()1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
測試效果: 
二、極坐標(biāo)系1、格式 ax = mp.gca(projection='polar’) mp.plot… mp.scatter… x、y分別對(duì)應(yīng)極角、極徑 2、測試代碼 import numpy as npimport matplotlib.pylab as mp
t = np.linspace(0, 2 * np.pi, 1001) # 極角# 螺旋線r_spiral = 0.8 * t # 螺旋線,極徑與極角是0.8倍的關(guān)系# 玫瑰線r_rose = 5 * np.sin(6 * t)# 繪制圖像mp.figure('Polar', facecolor='lightgray')ax = mp.gca(projection='polar')mp.title('Polar', fontsize=20) # 圖像標(biāo)題# 坐標(biāo)文本:極角,極徑ax.set_xlabel(r'$\theta$', fontsize=14)ax.set_ylabel(r'$\rho$', fontsize=14)mp.grid(linestyle=':')# 螺旋線mp.plot(t, r_spiral, c='dodgerblue', label=r'$\rho=0.8\theta$')# 玫瑰線mp.plot(t, r_rose, c='red', label=r'$\rho=5sin(6\theta)$')mp.tick_params(labelsize=10) # 刻度標(biāo)簽大小mp.legend()mp.show()1234567891011121314151617181920212223242526272812345678910111213141516171819202122232425262728 3、測試效果  三、半對(duì)數(shù)坐標(biāo)1、格式 mp.semilogy(…參數(shù)與mp.plot一樣) mp.semilogx() 2、測試代碼 import numpy as npimport matplotlib.pylab as mp
y = np.array([1, 10, 100, 1000, 100, 10, 1]) # y坐標(biāo)序列# 繪制圖像mp.figure('Normal & Log', facecolor='lightgray')mp.subplot(2, 1, 1) # 創(chuàng)建位置在2行1列的子圖# 普通plotmp.title('Normal', fontsize=16) # 圖像標(biāo)題mp.ylabel('Y', fontsize=12)# 刻度定位:x方向ax = mp.gca()ax.xaxis.set_major_locator(mp.MultipleLocator(1) # 多點(diǎn)定位器主刻度)ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1) # 多點(diǎn)定位器次刻度)# y方向ax.yaxis.set_major_locator(mp.MultipleLocator(250) # 多點(diǎn)定位器主刻度)ax.yaxis.set_minor_locator(mp.MultipleLocator(50) # 多點(diǎn)定位器次刻度)# 設(shè)置主刻度網(wǎng)格線mp.grid(which='major', axis='both', linewidth=0.75, linestyle='-', color='lightgray')# 設(shè)置次刻度網(wǎng)格線mp.grid(which='minor', axis='both', linewidth=0.25, linestyle='-', color='lightgray')mp.plot(y, 'o-', c='dodgerblue', label='plot')mp.legend()mp.subplot(2, 1, 2) # 創(chuàng)建位置在2行1列的子圖# 對(duì)數(shù)plot坐標(biāo)mp.title('Log', fontsize=16) # 圖像標(biāo)題mp.xlabel('X', fontsize=12)mp.ylabel('Y', fontsize=12)# 刻度定位:x方向ax = mp.gca()ax.xaxis.set_major_locator(mp.MultipleLocator(1) # 多點(diǎn)定位器主刻度)ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1) # 多點(diǎn)定位器次刻度)# y方向:按照缺省來自動(dòng)設(shè)置# 設(shè)置主刻度網(wǎng)格線mp.grid(which='major', axis='both', linewidth=0.75, linestyle='-', color='lightgray')# 設(shè)置次刻度網(wǎng)格線mp.grid(which='minor', axis='both', linewidth=0.25, linestyle='-', color='lightgray')mp.semilogy(y, 'o-', c='orangered', label='semilog')mp.legend()mp.tight_layout()mp.show()1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
3、測試效果 
|