【MOOC】Python資料分析與展示-北京理工大學-【第二週】資料分析之展示
單元4:matplotlib庫入門
寫在前面:matplotlib庫非常複雜,我們沒必要花時間去學習所有函式,對於該庫,應該採用:根據我們已有的資料,查詢文件或搜尋,來即時選擇可實現目的的函式,以實踐指導理論學習。
Matplotlib庫由各種視覺化類構成,內部結構複雜,受Matlab啟發(該模組的用法和matlab有很大的相似之處)
matplotlib.pyplot是繪製各類視覺化圖形的命令子庫,相當於快捷方式
import matplotlib.pyplot as plt
plt通常為該模組的別名
例項1:
例項2:
例項3:
4.1 繪圖部分
subplot函式
例項:
注意:呼叫subplot函式之後要使用plot函式才可以繪圖
plot函式
例項:
引數解釋【format_string】:
format_string: 控制曲線的格式字串,可選,其由顏色字元、 風格字元和標記字元組成
顏色字元:
風格字元:
標記字元:
例項:
引數解釋【kwargs】:
4.2 pyplot的中文顯示
第一種方法(修改全域性的字型屬性)
pyplot並不預設支援中文顯示,需要rcParams修改字型實現
rcParams屬性:
中文字型的分類:
例項:
第二種方法(修改區域性的字型屬性)
在有中文輸出的地方,增加一個屬性:fontproperties
4.3 pyplot的文字顯示
常用函式:
text函式例項:
annotate函式例項:
4.4 pyplot的子繪圖區域
假設現在要繪製如下有多個區域的圖形,那麼subplot顯然無法滿足我們的要求。
因此引入subplot2grid函式來實現該功能。
因此使用該函式,對應上圖的呼叫語句為:
為了使上面的subplot2grid函式的呼叫顯示更加簡潔,這裡引入GridSpec類來實現該功能
單元總結
單元5:matplotlib庫基礎繪圖函式(5個例項)
5.1 基礎圖示函式
5.2 餅圖繪製
5.3 直方圖繪製
5.4 極座標繪製
5.5 散點圖繪製
單元6:“引力波”的繪製
介紹:
物理學中,引力波是因為時空彎曲對外以輻射形式傳播的能量,愛因斯坦基於廣義相對論預言了引力波的存在,2015年9月14日, LIGO合作組宣佈探測到首個引力波訊號。2016年6月16日,LIGO合作組宣佈2015年12月26日03:38:53(UTC),兩臺不同位置的引力波探測器同時探測到了一個引力波訊號。
程式碼:
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
rate_h, hstrain= wavfile.read(r"H1_Strain.wav","rb")
rate_l, lstrain= wavfile.read(r"L1_Strain.wav","rb")
#reftime, ref_H1 = np.genfromtxt('GW150914_4_NR_waveform_template.txt').transpose()
reftime, ref_H1 = np.genfromtxt('wf_template.txt').transpose()
htime_interval = 1/rate_h
ltime_interval = 1/rate_l
fig = plt.figure(figsize=(12, 6))#建立一個大小為12*6的繪圖空間
htime_len = hstrain.shape[0]/rate_h
htime = np.arange(-htime_len/2, htime_len/2 , htime_interval)
plth = fig.add_subplot(221)
plth.plot(htime, hstrain, 'y')#畫出以時間為X軸,應變資料為Y軸的影象並設定標題和座標軸的標籤
plth.set_xlabel('Time (seconds)')
plth.set_ylabel('H1 Strain')
plth.set_title('H1 Strain')
ltime_len = lstrain.shape[0]/rate_l
ltime = np.arange(-ltime_len/2, ltime_len/2 , ltime_interval)
pltl = fig.add_subplot(222)
pltl.plot(ltime, lstrain, 'g')
pltl.set_xlabel('Time (seconds)')
pltl.set_ylabel('L1 Strain')
pltl.set_title('L1 Strain')
pltref = fig.add_subplot(212)
pltref.plot(reftime, ref_H1)
pltref.set_xlabel('Time (seconds)')
pltref.set_ylabel('Template Strain')
pltref.set_title('Template')
fig.tight_layout()#自動調整影象外部邊緣
plt.savefig("Gravitational_Waves_Original.png")
plt.show()
plt.close(fig)
效果:
其中template是理想情況下的引力波影象,H1 Strain、L1 Strain是帶有噪聲資訊的引力波影象。