使用pyplot在一張畫布上繪製多個子圖的python指令碼
阿新 • • 發佈:2018-12-26
#coding=utf8 import matplotlib.pyplot as plt import numpy as np #建立陣列:x、y1、y2、y3、x4、y4 x = np.array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5]) y1 = np.array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68]) y2 = np.array([9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74]) y3 = np.array([7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73]) x4 = np.array([8, 9, 8,10, 8, 6, 8, 19, 3.8, 8,4.8]) y4 = np.array([6.8, 5.6, 7.1, 8.84, 8.7, 7.04, 5.5, 1.50, 5.6, 7.9, 6.88]) def fit(x): return 1+ 4 * x/5 #建立xfit陣列,該陣列包含兩個元素:x的最大值和最小值 xfit = np.array([np.min(x), np.max(x)]) #建立子圖 plt.subplot(221) #在第一張子圖上繪製兩個圖形 #x,y1的散點圖,黑色方塊 #xfit,fit(xfit)紅色實線,線寬為2 plt.plot(x, y1, 'ks', xfit, fit(xfit), 'r-', lw=2) #設定x軸範圍:2到20 #設定y軸範圍:2到14 plt.axis([2, 20, 2, 14]) #plt.gca():獲取當前子圖 #plt.setp():設定圖示例項的屬性。 #設定子圖的xticklabels為空 #yticks顯示為:4、8、12,,xticks顯示:0、 10 、20 plt.setp(plt.gca(), xticklabels=[], yticks=(4, 8, 12), xticks=(0, 10, 20)) #matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs) # 第一個引數是x軸座標 # 第二個引數是y軸座標 # 第三個引數是要顯式的內容 #fontsize設定顯示字型大小 plt.text(3, 12, 'I', fontsize=20) #建立第二個子圖 plt.subplot(222) #繪製兩個圖形 #x,y2的散點圖,黑色方塊 #xfit,fit(xfit)紅色實線,線寬為2 plt.plot(x, y2, 'ks', xfit, fit(xfit), 'r-', lw=2) plt.axis([2, 20, 2, 14]) #plt.gca():獲取當前子圖 #plt.setp():設定圖示例項的屬性。 #設定子圖的xticklabels、yticklabels為空 #yticks顯示為:4, 8, 12,,xticks顯示:0、 10 、20 plt.setp(plt.gca(), xticks=(0, 10, 20), xticklabels=[], yticks=(4, 8, 12), yticklabels=[], ) plt.text(3, 12, 'II', fontsize=20) plt.subplot(223) plt.plot(x, y3, 'ks', xfit, fit(xfit), 'r-', lw=2) plt.axis([2, 20, 2, 14]) plt.setp(plt.gca(), yticks=(4, 8, 12), xticks=(0, 10, 20)) plt.text(3, 12, 'III', fontsize=20) plt.subplot(224) xfit = np.array([np.min(x4), np.max(x4)]) plt.plot(x4, y4, 'ks', xfit, fit(xfit), 'r-', lw=2) plt.axis([2, 20, 2, 14]) plt.setp(plt.gca(), yticklabels=[], yticks=(4, 8, 12), xticks=(0, 10, 20)) plt.text(3, 12, 'IV', fontsize=20) # 驗證統計資料 pairs = (x, y1), (x, y2), (x, y3), (x4, y4) #corrcoef函式 #計算兩組數的相關係數 #返回結果為矩陣,第i行第j列的資料表示第i組數與第j組數的相關係數。對角線為1 for x, y in pairs: print 'mean=%1.2f, std=%1.2f, r=%1.2f' % (np.mean(y), np.std(y),np.corrcoef(x, y)[0][1]) #顯示繪製圖像 plt.show()