python matplotlib中的subplot函式使用詳解
阿新 • • 發佈:2020-01-19
python裡面的matplotlib.pylot是大家比較常用的,功能也還不錯的一個包。基本框架比較簡單,但是做一個功能完善且比較好看整潔的圖,免不了要網上查詢一些函式。於是,為了節省時間,可以一勞永逸。我把常用函式作了一個總結,最後寫了一個例子,以後基本不用怎麼改了。
一、作圖流程:
1.準備資料, , 3作圖, 4定製, 5儲存, 6顯示
1.資料可以是numpy陣列,也可以是list
2建立畫布:
import matplotlib.pyplot as plt #figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True) #num:影象編號或名稱,數字為編號 ,字串為名稱 #figsize:指定figure的寬和高,單位為英寸; #dpi引數指定繪圖物件的解析度,即每英寸多少個畫素,預設值為80,1英寸等於2.5cm,A4紙是 21*30cm的紙張 #facecolor:背景顏色 #edgecolor:邊框顏色 #frameon:是否顯示邊 fig = plt.figure() fig = plt.figure(figsize=(8,6),dpi=80) fig.add_axes() fig,axes = plt.subplos(nrows = 2,ncols = 2) #axes是長度為4的列表
3、作圖路線
一維資料:
axes[0,0].plot(x,y) axes[0,1].bar([1,2,3],[2,4,8]) axes[0,2].barh([1,8]) axes[1,0].axhline(0.45) axes[1,1].scatter(x,y) axes[1,2].axvline(0.65) axes[2,0].fill(x,y,color = 'blue') axes[2,1].fill_between(x,2].violinplot(y) axes[0,3].arrow(0,0.5,0.5) axes[1,3].quiver(x,y)
4,定製
plt.plot(x,alpha=0.4,c = 'blue',maker = 'o') #顏色,標記,透明度 # 顯示數學文字 t = np.arange(0.0,2.0,0.01) s = np.sin(2*np.pi*t) plt.plot(t,s) plt.title(r'$\alpha_i > \beta_i$',fontsize=20) plt.text(1,-0.6,r'$\sum_{i=0}^\infty x_i$',fontsize=20) plt.text(0.6,0.6,r'$\mathcal{A}\mathrm{sin}(2 \omega t)$',fontsize=20) plt.xlabel('time (s)') plt.ylabel('volts (mV)') fig = plt.figure() fig.suptitle('bold figure suptitle',fontsize=14,fontweight='bold') ax = fig.add_subplot(111) fig.subplots_adjust(top=0.85) ax.set_title('axes title') ax.set_xlabel('xlabel') ax.set_ylabel('ylabel') ax.text(3,8,'boxed italics text in data coords',style='italic',bbox={'facecolor':'red','alpha':0.5,'pad':10}) ax.text(2,6,r'an equation: $E=mc^2$',fontsize=15) ax.text(3,u'unicode: Institut f\374r Festk\366rperphysik') ax.text(0.95,0.01,'colored text in axes coords',verticalalignment='bottom',horizontalalignment='right',transform=ax.transAxes,color='green',fontsize=15) ax.plot([2],[1],'o') # 註釋 ax.annotate('我是註釋啦',xy=(2,1),xytext=(3,4),color='r',size=15,arrowprops=dict(facecolor='g',shrink=0.05)) ax.axis([0,10,10])
5,儲存顯示
plt.savefig("1.png") plt.savefig("1.png",trainsparent =True) plt.show()
二、部分函式使用詳解:
1,fig.add_subplot(numrows,numcols,fignum) ####三個引數,分別代表子圖的行數,列數,圖索引號。 eg: ax = fig.add_subplot(2,3,1) (or,ax = fig.add_subplot(231))
2,plt.subplots()使用
x = np.linspace(0,2*np.pi,400) y = np.sin(x**2) fig,ax = plt.subplots() ax.plot(x,y) ax.set_title('Simple plot') # Creates two subplots and unpacks the output array immediately #fig = plt.figure(figsize=(6,6)) f,(ax1,ax2) = plt.subplots(1,sharey=True) ax1.plot(x,y) ax1.set_title('Sharing Y axis') ax2.scatter(x,y) # Creates four polar axes,and accesses them through the returned array fig,axes = plt.subplots(2,subplot_kw=dict(polar=True)) axes[0,y) # Share a X axis with each column of subplots plt.subplots(2,sharex='col') # Share a Y axis with each row of subplots plt.subplots(2,sharey='row') # Share both X and Y axes with all subplots plt.subplots(2,sharex='all',sharey='all') # Note that this is the same as plt.subplots(2,sharex=True,sharey=True) # Creates figure number 10 with a single subplot # and clears it if it already exists. fig,ax=plt.subplots(num=10,clear=True)
3.plt.legend()
plt.legend(loc='String or Number',bbox_to_anchor=(num1,num2)) plt.legend(loc='upper center',bbox_to_anchor (0.6,0.95),ncol=3,fancybox=True,shadow=True) #bbox_to_anchor被賦予的二元組中,第一個數值用於控制legend的左右移動,值越大越向右邊移動,第二個數值用於控制legend的上下移動,值越大,越向上移動
以上這篇python matplotlib中的subplot函式使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。