1. 程式人生 > >【MOOC】Python資料分析與展示-北京理工大學-【第二週】資料分析之展示

【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是帶有噪聲資訊的引力波影象。