Matplotlib库入门
python数据分析:Matplotlib库入门
Matplotlib库的介绍
Matplotlib:Python非常优秀的数据可视化第三方库。
Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发。
matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式。
import matplotlib.pyplot as plt
我们在此绘制一个最简单的,包含五个元素列表的图形。
代码实例:
import matplotlib.pyplot as plt
plt.plot([3,1,4,5,2])
plt.ylabel("Grade") #y轴增加了一个标签,名为Grade
plt.savefig('test',dpi=600) #将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量
plt.show()#可以在ipythpn的交互环境中展示生成的图像
绘制好的图形如下:
- 在这个图形中,我们输入的列表[3,1,4,5,2]作为纵坐标的值显示出来,对于.plot函数,当只有一个输入列表或者数组时,也就是说输入的参数为一维时,这个参数会被自动视为y轴来处理。x轴即为这个列表的索引(从0开始),是自动生成的。
- dpi指的是在每一英寸空间中包含的点的数量,我们在这里指定每个英寸包含600个像素点。
plt.plot([0,2,4,6,8],[3,1,4,5,2])
#当plt.plot()函数有两个以上的参数时,按照x轴和y轴的顺序绘制数据点。
plt.axis([-1,10,0,6])
#**plt.axis()函数是设定横纵坐标尺度的函数。它的参数是一个具有四个变量的列表。**如上例所示,其中的-1,10是指x轴的坐标起始于-1,终止于10;y轴的坐标起始于0,终止于6。
pyplot的绘图区域
在绘图区域中选择子绘图区域
代码实例:
import numpy as np
import matplotlib.pyplot as plt
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
a = np.arange(0.0, 5.0, 0.02)
plt.subplot(211)
plt.plot(a,f(a))
plt.subplot(212)
plt.plot(a, np.cos(2*np.pi*a),'r--')
plt.show()
-
plt.subplot(211)第一次调用时将我们整个绘图区域分成两行一列,即为上下两块,选择第一块(上边的一块)。选择好了之后再调用plt.plot()函数,为在这个区域绘制我们想要的能量衰减曲线。
-
plt.subplot(2,1,2)第二次调用时,选择第二块绘图区域,绘制出正弦曲线,同时我们将曲线的格式设置为曲线形式。
pyplot的plot()函数
plt.plot(x, y, format_string, **kwargs)
- x:x轴数据,列表或数组,可选。
- y:y轴数据,列表或数组,可选。
- format_string:控制曲线的格式字符串,可选。
- kwargs:第二组或者更多(x, y, format_string, **kwargs)
代码实例:
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(10)
plt.plot(a, a*1.5, a, a*2.5, a, a*3.5, a, a*4.5)
plt.show()
可以看到图片中产生了四条曲线,每一条曲线都是由一组x和y坐标产生的。
format_string:控制曲线的格式字符串,可选,由颜色字符、风格字符和标记字符组成。
- 常用的颜色字符:
颜色字符 | 说明 | 颜色字符 | 说明 |
---|---|---|---|
‘b’ | 蓝色 | ‘m’ | 洋红色 magenta |
‘g’ | 绿色 | ‘y’ | 黄色 |
‘r’ | 红色 | ‘k’ | 黑色 |
‘e’ | 青绿色 cyan | ‘w’ | 白色 |
‘#008000’ | RGB某颜色 | ‘0.8’ | 灰度值字符串 |
如果用户不指定颜色,那么系统会自动选择一种与其它曲线不同的颜色来赋值这条曲线。
- 常用的风格字符
风格字符 | 说明 |
---|---|
‘-’ | 实线 |
‘–’ | 破折线 |
‘-.’ | 点划线 |
‘:’ | 虚线 |
‘’ ‘’ | 无线条 |
当前的常用打印机打印图片时一般为黑白颜色,所以我们最好用不同的风格字符来区分不同含义的曲线。
- 常用的标记字符
标记字符 | 说明 | 标记字符 | 说明 | 标记字符 | 说明 |
---|---|---|---|---|---|
‘.’ | 点标记 | ‘1’ | 下花三角标记 | ‘h’ | 竖六边形标记 |
‘,’ | 像素标记(极小点) | ‘2’ | 上花三角标记 | ‘H’ | 横六边形标记 |
‘o’ | 实心圈标记 | ‘3’ | 右花三角标记 | ‘+’ | 十字标记 |
‘v’ | 倒三角标记 | ‘4’ | 左花三角标记 | ‘x’ | x标记 |
‘^’ | 上三角标记 | ‘s’ | 实心方形标记 | ‘D’ | 菱形标记 |
‘>’ | 右三角标记 | ‘p’ | 实心五角标记 | ‘d’ | 瘦菱形标记 |
‘<’ | 左三角标记 | ‘*’ | 星形标记 | ‘|’ | 垂直线标记 |
以上三种字符在使用时可以同时使用。可以根据自己的习惯和现实的特点来选择曲线的风格。
**kwargs:第二组或者更多(x, y, format_string, kwargs)
- color:控制颜色,
color = 'green'
- linestyle:线条风格,
linestyle = 'dashed'
- marker:标记风格,
marker = 'o'
- markerfacecolor:标记颜色,
markerfacecolor = 'blue'
- markersize:标记尺寸,
markersize = 20
pyplot的中文显示
pyplot并不默认支持中文显示,如果希望在坐标系中出现额外的中文汉字,则需要用代码进行辅助。
- 用rcParams修改字体实现。
#'SimHei’表示黑体
rcParams的属性:
属性 | 说明 |
---|---|
‘font.family’ | 用于显示字体的名字 |
‘font.style’ | 字体风格,正常"normal"或 斜体"italic" |
‘font.size’ | 字体大小,整数字号或者’large’、‘x-small’ |
font.family:
中文字体 | 说明 |
---|---|
‘SimHei’ | 中文黑体 |
‘Kaiti’ | 中文楷体 |
‘LiSu’ | 中文隶书 |
‘FangSong’ | 中文仿宋 |
‘YouYuan’ | 中文幼圆 |
‘STSong’ | 华文宋体 |
- 在有中文输入的地方,增加一个属性:fontproperties
这种方法可以有效地在特定需要中文的地方确定中文字体,是更为合适的方法,建议使用。
pyplot的文本显示
pyplot的文本显示函数:
函数 | 说明 |
---|---|
plt.xlabel() | 对x轴增加文本标签 |
plt.ylabel() | 对y轴增加文本标签 |
plt.title() | 对图形整体增加文本标签 |
plt.text() | 在任意位置增加文本 |
plt.annotate() | 在图形中增加带箭头的注解 |
#Latex语法: y = c o s ( 2 π x ) y=cos(2\pi x) y=cos(2πx) 是由一对美元符号标识的Latex文本,Latex是一个全球非常成熟的排版文本体系,具有自己的排版语法,我们在代码中可以使用$符号来引入一部分的Latex语法,
#text()中的前两个坐标(2,1,)表示我们增加文本的坐标值,横坐标为2,纵坐标为1。显示的内容为第三个参数。
#plt.axis() 制定横纵坐标的范围。
#plt.grid() 的值设定为True,表示我们在图形中加入了网格曲线,最后将其绘制出来。
plt.annotate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)
#第一个参数为一个字符串,表示需要注释的内容;
#第二个参数表示箭头所在的位置,必须是用 (x,y)= 的形式作为引导,且后边为一个元组类型;
#第三个参数表示文本所在的位置;
#在第四个参数中,我们应用 arrowprops=dict() 利用字典的形式对箭头的格式做相关的说明。shrink参数使得箭头在文本和指向的图形之间都留有了一定的空白。
pyplot的子绘图区域
这里介绍一个辅助subplot来进行子区域设计的方法:
plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)
理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始。
plt.subplot2grid((3,3),(1,0),colspan=2)
#第一个参数为元组,(3,3)表示把整个绘图区域分为3*3=9个等份;第二个参数(1,0)表示当前选中的位置为第1行第0列,即为图中黄色区域的左侧部分;第三个参数colspan=2表示在列的方向上向右延申两个长度,这样就构成了上图中所示的黄色区域。
当然,我们也可以通过使用GridSpec类来实现绘图区域的划分。
想要了解更多matplotlib库绘图的相关信息,可以访问:
#所有视频截图均来自中国大学mooc北京理工大学嵩天老师的课程
《Python数据分析与展示》