matplotib库中有非常多的可视化绘图类,内部结构复杂。受 MATLAB 提供的绘图功能的启发,matplotlib提供了两个便捷的绘图子模块:pyplot 和pylab,其中pyplot模块提供了一套和MATLAB类似的绘图方法,这些方法把复杂的内部结构隐藏起来,通过简洁的绘图函数来实现不同的绘图功能;pylab 模块则包含了numpy库和pyplot模块中常用的一些函数,使用方法和 pyplot模块类似。
一般采用如下方式引入matplotlib库中的pyplot模块:
import matplotlib.pyplot as plt
常见的绘图里面一般包含画布、图标题、x轴、y轴、绘图区、图例等基本元素,x轴和y轴中存在对应的刻度线和轴标题。
matplotib中最常用的是pyplot模块,其内部包含绘制图形所需要的功能函数,常见的绘图函数如下所示。
函数 | 功能 |
---|---|
figure() | 创建一个空白画布,可以指定画布的大小和像素 |
subplot() | 在绘图区域创建子绘图区域 |
plot() | 基本绘图函数 |
title() | 设置图表标题 |
xlabel() | 设置x轴名称 |
yabel() | 设置y轴名称 |
xlim() | 指定x轴的刻度范围 |
ylim() | 指定y轴的刻度范围 |
legend() | 设置图例 |
savefig() | 保存图像 |
show() | 显示图像 |
绘图实例:
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
matplotlib.rcParams['font.family']='SimHei' #字体设置
matplotlib.rcParams['axes.unicode_minus']=False #设置符号显示正常
x = np.linspace(0,10, 100) #设置x的取值范围
y = np.cos(x) #设置y的取值
plt.plot(x,y,"b") #将x、y进行绘图,颜色为蓝色
plt.title("cos函数") #设置图标题
plt.xlabel('x') #设置x轴标签
plt.ylabel('y=cosx') #设置y轴标签
plt.ylim(-1.5,1.5) #设置y轴取值范围
plt.legend(labels=["y=cosx"]) #设置图例
plt.show() #显示图像
plot()是pyplot模块中最基本的一个绘图函数,其语法格式如下:
plot(x,y,s,linewidth)
其中x表示横坐标的取值范围,y表示与横坐标对应的纵坐标取值范围,s表示控制线型的格式字符串,linewidth表示线的宽度。
直线的绘制:
import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5])
plt.show()
在上述绘图源码中plot函数中只有一个参数列表,则将此列表的每个元素作为y轴的取值,将每个元素的索引作为x取值。
plot()默认情况下绘制的图像是连续的,可以增加参数来控制点线的颜色、风格等,从而获得各种各样的图像。
常见的颜色字符:
字符 | 描述 | 字符 | 描述 |
---|---|---|---|
r | 红色 | k | 黑色 |
g | 绿色 | w | 白色 |
b | 蓝色 | c | 蓝绿色 |
y | 黄色 | m | 品红色 |
#00FF11 | RGB颜色模型对应的某种颜色 |
常见的点风格字符:
符号 | 描述 | 符号 | 描述 |
---|---|---|---|
, | 小的实心点 | . | 实心点 |
o | 大的实心点 | v | 倒三角 |
^ | 上三角 | > | 右三角 |
< | 左三角 | s | 正方形 |
p | 正五边形 | h | 垂直正六边形 |
H | 水平正六边形 | + | 十字 |
x | 叉号 | d | 菱形 |
常见的线风格字符:
符号 | 描述 |
---|---|
- | 实线 |
– | 破折线 |
: | 虚线 |
-. | 点横线 |
风格点的绘制:
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(5)
y=x
plt.plot(x,y,"bs")
plt.show()
风格线的绘制:
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(5)
y=x
plt.plot(x,y,"k--")
plt.show()
此外plt()函数还支持在一张图纸上绘制多个图形。
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(5)
y1=x
y2=x*2
plt.plot(x,y1,"bs",x,y2,"k--")
plt.show()
pyplot模块中常用的函数及其功能分别如下:
xmin,xmax,ymin,ymax = axis() #返回当前坐标轴的区间信息
axis(xmin,xmax,ymin,ymax) #设置新的坐标轴的区间信息
xmin,xmax,ymin,ymax = axis(option) #设置坐标轴的状态等属性
其中option参数可以设置的内容及其作用如下:
值 | 描述 |
---|---|
‘on’ | 坐标轴和标签可见 |
‘off’ | 坐标轴和标签不可见 |
‘equal’ | 通过更改轴的的取值区间来设置相等的缩放比例 |
‘scaled’ | 通过更改绘图框的尺寸来设置相等的缩放比例 |
‘tight’ | 设置足够大的区间以显示所有数据 |
‘auto’ | 自动缩放 |
‘image’ | 坐标轴的取值范围根据数据范围进行缩放 |
‘square’ | 方形图,类似’scaled’,但强制要求xmax-xmin = ymax-ymin |
xmin,xmax=xlim() #返回当前x轴的取值区间
xlim(xmin,xmax) #设置x轴的取值区间
x_ticks,labels = xticks() #返回当前x轴的刻度值和刻度标签
xticks(x_ticks,[labels]) #设置x轴的刻度值和刻度标签,刻度标签可以省略
xlabel(label) #将x轴的标签设置为label
legend([图例1,[图例2,图例3]]) #在绘图区适当的位置显示一个或若干个图例
text(x,y,s) #在坐标系的(x,y)点,显示文本s
title(s,loc='center') #为绘图区添加标题s,默认居中显示
上述函数的使用实例:
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
matplotlib.rcParams['font.family']='SimHei' #设置中文字体为黑体
x=np.arange(5)
y1=x
y2=2*x
y3=3*x
plt.plot(x,y1,"bs",x,y2,"k--",x,y3,"ro-") #三条直线的绘制
plt.axis('scaled') #设置x轴y轴按实际比例显示
plt.xlim(0,5) #设置x轴的区间
plt.ylim(0,15) #设置y轴的区间
plt.xticks([0,1,2,3,4]) #设置x轴刻度
plt.yticks([3,6,9,12,15],['a','b','c','d','e']) #设置y轴的刻度标签,'a'对应3,以此类推
plt.xlabel('x轴') #设置x轴名称
plt.ylabel('y轴') #设置y轴名称
plt.legend(["y1=x","y2=2x","y3=3x"]) #设置图例
plt.text(1,8,"直线") #在坐标(1,8)处添加文本"直线"
plt.show()
如果需要在一个绘图区域绘制多个不叠加的图形,需要使用到pyplot模块中的subplot()函数,使用方法如下:
subplot(nrows,ncols,index)
其中nrows表示将绘图区分割成nrows行;ncols表示将绘图区分割成ncols列;index用于指定当前子绘图区域的索引,子区域索引按照行优先顺序从1开始进行编号,步长为1。
绘制子图实例:
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(5)
y1=x
y2=2*x
y3=3*x
y4=4*x
plt.subplot(2,2,1) #第一行第一列子图的绘制
plt.plot(x,y1,"bs")
plt.subplot(2,2,2) #第一行第二列子图的绘制
plt.plot(x,y2,"k--")
plt.subplot(2,2,3) #第二行第一列子图的绘制
plt.plot(x,y3,"ro-")
plt.subplot(2,2,4) #第二行第二列子图的绘制
plt.plot(x,y4,"m:")
plt.show()
pyplot()模块除了提供绘制直、曲线或离散点的plot()函数外,还提供了绘制条形图、散点图、饼图等多种图形的函数。常见的绘制图形函数如下:
函数 | 描述 |
---|---|
bar() | 绘制竖向条形图 |
barh() | 绘制横向条形图 |
hist() | 绘制直方图 |
pie() | 绘制饼图 |
boxplot() | 绘制箱形图 |
scatter() | 绘制散点图 |
下面选择几种常见的绘制函数展开介绍。
绘制竖向条形图的函数用法如下:
bar(x,height)
其中x表示x轴对应的值,height表示与x对应的高度。
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(5)
height=[1,7,9,4,5]
plt.bar(x,height)
plt.show()
绘制散点图的函数用法如下:
scatter(x,y)
其中x表示x轴对应的值,y表示与x对应的y值。
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(5)
y=[1,7,9,4,5]
plt.scatter(x,y)
plt.show()
绘制饼图的函数用法如下:
pie(x,explode=None,labels-None,autopct=None,shadow=False)
其中x表示绘制饼图的数据集;explode表示设置饼块分离,默认为空,表示不分离;labels表示设置饼块对应标签,默认为空;autopct表示设置饼块显示占比值,默认为空;shadow表示设置饼图是否有阴影,默认为False。
import matplotlib.pyplot as plt
data = [1,2,3,4,5]
Explode = (0.1,0,0,0,0) #第一个饼块分离
Labels=['num1','num2','num3','num4','num5'] #饼块对应的标签
plt.pie(data,explode=Explode,labels=Labels,autopct='%.2f%%') #autopct='%.2f%%'设置显示占比值并保留两位小数
plt.show()