1. 程式人生 > 程式設計 >python matplotlib中的subplot函式使用詳解

python matplotlib中的subplot函式使用詳解

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函式使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。