文章目录
- 1、Matplotlib
 - 2、基本结构
 - 3、pyplot模块
 - 3.1 pyplot.plot()函数的使用
 - 3.2 其他常见属性设置
 - 3.3 子图的绘制
 
- 4、其他类型的图表
 - 4.1 竖向条形图
 - 4.2 散点图
 - 4.3 饼图
 
1、Matplotlib
matplotib库中有非常多的可视化绘图类,内部结构复杂。受 MATLAB 提供的绘图功能的启发,matplotlib提供了两个便捷的绘图子模块:pyplot 和pylab,其中pyplot模块提供了一套和MATLAB类似的绘图方法,这些方法把复杂的内部结构隐藏起来,通过简洁的绘图函数来实现不同的绘图功能;pylab 模块则包含了numpy库和pyplot模块中常用的一些函数,使用方法和 pyplot模块类似。
 一般采用如下方式引入matplotlib库中的pyplot模块:
import matplotlib.pyplot as plt
 
2、基本结构
常见的绘图里面一般包含画布、图标题、x轴、y轴、绘图区、图例等基本元素,x轴和y轴中存在对应的刻度线和轴标题。
 
3、pyplot模块
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()  #显示图像
 

3.1 pyplot.plot()函数的使用
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()
 

3.2 其他常见属性设置
pyplot模块中常用的函数及其功能分别如下:
- axis()函数。该函数是获取或设置坐标轴属性的快捷方法,axis()函数在使用时可通过传递参数设置x、y轴的取值区间,也可以通过传递参数设置坐标轴是否显示,调用该函数会返回一个由x轴取值区间边界xmin、xmax和y轴取值区间边界值ymin、ymax组成的元组。
一般axis()函数的使用方法有如下几种: 
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 | 
- xlim()函数。xlim()函数用于设置或者返回x轴的取值区间,可以通过传递参数直接设置,也可以通过调用函数返回取值区间进行设置。
一般xlim()函数的使用方法有如下几种: 
xmin,xmax=xlim()  #返回当前x轴的取值区间
xlim(xmin,xmax) #设置x轴的取值区间
 
- ylim()函数。ylim()函数用于设置y轴的取值区间,使用方法和xlim()函数一致。
 - xticks()函数。xticks()函数用于设置或返回x轴的刻度值或刻度标签,可以通过传递参数直接设置,也可以通过调用函数返回刻度值进行设置。
一般xticks()函数的使用方法有如下几种: 
x_ticks,labels = xticks()  #返回当前x轴的刻度值和刻度标签
xticks(x_ticks,[labels])  #设置x轴的刻度值和刻度标签,刻度标签可以省略
 
- yticks()函数。yticks()函数用于设置y轴的刻度值或刻度标签,使用方法和xticks()函数一致。
 - xlabel()函数。xlabel()函数用于设置x轴的标签,通过传递参数设置x轴的标签及其标签属性。使用方法如下:
 
xlabel(label)  #将x轴的标签设置为label
 
- yxabel()函数。ylabel()函数用于设置y轴的标签,使用方法和xlabel()函数一致。
 - legend()函数。legend()函数通过传递参数设置当前绘图区的图例。使用方法如下:
 
legend([图例1,[图例2,图例3]])  #在绘图区适当的位置显示一个或若干个图例
 
- text()函数。text()函数通过传递参数可以在指定的坐标位置显示相应的文本。使用方法如下:
 
text(x,y,s)  #在坐标系的(x,y)点,显示文本s
 
- title()函数。title()函数通过传递参数设置当前绘图区的标题及其显示位置,位置参数可以为‘center’、‘left’、‘right’,对应中间、左、右,默认为‘center’。使用方法如下:
 
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()
 

3.3 子图的绘制
如果需要在一个绘图区域绘制多个不叠加的图形,需要使用到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()
 

4、其他类型的图表
pyplot()模块除了提供绘制直、曲线或离散点的plot()函数外,还提供了绘制条形图、散点图、饼图等多种图形的函数。常见的绘制图形函数如下:
| 函数 | 描述 | 
|---|---|
| bar() | 绘制竖向条形图 | 
| barh() | 绘制横向条形图 | 
| hist() | 绘制直方图 | 
| pie() | 绘制饼图 | 
| boxplot() | 绘制箱形图 | 
| scatter() | 绘制散点图 | 
下面选择几种常见的绘制函数展开介绍。
4.1 竖向条形图
绘制竖向条形图的函数用法如下:
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()
 

4.2 散点图
绘制散点图的函数用法如下:
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()
 

4.3 饼图
绘制饼图的函数用法如下:
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()
 




















