【MOOC】Python数据分析与展示-北京理工大学-【第二周】数据分析之展示
单元4:matplotlib库入门
更多可参考:http://matplotlib.org/gallery.html
写在前面: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),两台不同位置的引力波探测器同时探测到了一个引力波信号。
数据源:
http://python123.io/dv/grawave.html
http://python123.io/dv/H1_Strain.wav
http://python123.io/dv/L1_Strain.wav
http://python123.io/dv/wf_template.txt
代码:
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是带有噪声信息的引力波图像。
