繪製等高線圖import numpy as np
import matplotlib as mplimport matplotlib.pyplot as plt#定義x,y兩個參數,並給出返回的公式,兩個*表示平方def process_signals(x,y):return (1-(x**2+y**2))*np.exp(-y**3/3)#np.arange()中第一個參數為起點,第二個參數為終點,第三個參數為步長x=np.arange(-1.5,1.5,0.1)y=np.arange(-1.5,1.5,0.1)#meshgrid的作用適用於生成網格型數據,可以接受兩個一維數組生成兩個二維矩陣,對應兩個數組中所有的(x,y)對X,Y=np.meshgrid(x,y)#可以理解為z=f(x,y),x和y為函數的兩個參數,z為函數的返回值,相同的z值連成的曲線就是等高線Z=process_signals(X,Y)#對N的取值範圍和步長進行設置N=np.arange(-1,1.5,0.1)#函數contour用來繪製等高線CS=plt.contour(Z,N,linewidths=2,cmap=mpl.cm.jet)#繪製等高線標籤,inline=True表示高度寫在等高線上plt.clabel(CS,inline=True,fmt='%1.1f',fontsize=10)#顯示顏色條plt.colorbar(CS)#繪製標題plt.title('My function:$z=(1-x^2+y^2)e^{-(y^3)/3}$')plt.show()
2.繪製圖表底層區域(1)
import numpy as npimport matplotlib.pyplot as pltfrom math import sqrt#生成從0到1000的一個序列t=range(1000)#對生成的值進行開根號計算y=[sqrt(i) for i in t]#繪製(t,y)曲線,顏色紅色,線寬plt.plot(t,y,color='red',lw=2)#填充曲線的下方區域plt.fill_between(t,y,color='darkblue')plt.show()
3.繪製圖表底層區域(2)
#導入繪圖所需要的包import matplotlib.pyplot as pltimport numpy as np#x值其實位置為0,終點位置為2,步長為0.1,並給出函數y1,y2的公式x=np.arange(0.0,2,0.1)y1=np.sin(np.pi*x)y2=1.7*np.sin(4*np.pi*x)#生成圖紙fig=plt.figure()#繪製二行一列圖中的子圖一axes1=fig.add_subplot(211)#繪製函數y1,y2的曲線圖像,顏色為灰色axes1.plot(x,y1,x,y2,color='grey')#設置填充區域,當y2<=y1時,填充區域的顏色為藍色,當y1<=y2時,填充區域的顏色為金色axes1.fill_between(x,y1,y2,where=y2<=y1,facecolor='blue',interpolate=True)axes1.fill_between(x,y1,y2,where=y1<=y2,facecolor='gold',interpolate=True)axes1.set_title('Blue where y2<=y1.Gold-color where y2>=y1.')#設置y值的上下限axes1.set_ylim(-2,2)#屏蔽數組中y2>1的值y2=np.ma.masked_greater(y2,1.0)#繪製二行一列圖中的子圖二,共享子圖一中的x軸axes2=fig.add_subplot(212,sharex=axes1)axes2.plot(x,y1,x,y2,color='black')axes2.fill_between(x,y1,y2,where=y2<=y1,facecolor='green',interpolate=True)axes2.fill_between(x,y1,y2,where=y1<=y2,facecolor='deeppink',interpolate=True)axes2.set_title('Same as above,but mask')axes2.set_ylim(-2,2)#繪製網格線axes2.grid('on')plt.show()