一.matplotlib简介
Matplotlib是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。Matplotlib可以用于Python脚本,Python和IPython Shell、Jupyter笔记本,Web应用程序服务器以及四个图形用户界面工具包。
Matplotlib的主要目标是使容易的事情变得更容易,使困难的事情变得可能。你只需几行代码就可以生成图表、直方图、功率谱、条形图、误差图、散点图等
二.matplotlib安装
要在Python中安装Matplotlib,你可以按照以下步骤操作:
1.确保你的Python环境:首先,你需要有Python 3.x版本,因为Matplotlib是Python的一个库,而不是Python安装程序自带的库,所以需要额外安装。
2.更新pip工具:如果你尚未安装pip,你需要先安装pip。在Windows系统中,你可以在命令提示符或PowerShell中运行以下命令来安装pip:
python -m ensurepip --default-pip
在Linux或Mac系统中,你可以使用你的包管理器来安装pip。例如,在Debian或Ubuntu系统中,你可以运行以下命令:
sudo apt-get update
sudo apt-get install python3-pip
安装Matplotlib:一旦你安装了pip,你就可以使用pip来安装Matplotlib。在命令行或终端中输入以下命令即可完成安装:
pip install matplotlib
查看Matplotlib版本:安装完成后,你可以在命令行或终端中输入以下命令来查看Matplotlib的版本:
python -m pip list
如果你看到Matplotlib在列表中,那么说明Matplotlib已成功安装。
三.matplotlib函数和参数介绍
plot函数的绘图语法及部分参数:
语法:plt.plot(x,y,color,linestyle,marker,format_string,...)
参数:
参数 | 作用 |
x | x轴数据,传入参数值时不用写参数名x |
y | y轴数据,传入参数值时不用写参数名y |
color | 图形颜色,接收颜色英文名,颜色英文名首字母,十六进制颜色代码等 |
linestyle | 线条样式,‘-’是实线,‘--’是虚线,··· |
marker | 点的样式,‘*’是星号,‘o’是圆的,··· |
format_string | 可以通过一串字符控制图形样式,如‘r--o’表示红色、虚线、圆点 |
plot函数的添加文本标签语法及部分参数:
语法:plot.text(x,y,s,ha,va,fontsize,color,...)
参数:
参数 | 作用 |
x | 输入一个x轴的值(数字和字符),表示要插入文本·的x坐标 |
y | 输入一个y轴的值(数字和字符),表示要插入文本·的y坐标 |
s | 要插入的文本字符串 |
ha | 水平对齐方式,‘center(居中)’\'left(向左)'\‘right(right)’ |
va | 垂直对齐方式,‘center(居中对齐)’\'top(向上对齐)'\'bottom(向下对齐)' |
fontsize | 字体大小,传入一个数字 |
color | 文本字体颜色 |
plot函数的设置坐标轴的部分参数:
- 坐标轴分为x轴和y轴,内容包括坐标轴的标题、刻度、范围和网格线。
- Matplotlib库中通过不同函数控制以上坐标轴的设置。
参数 传入参数及其作用 plot.xlabel() 传入一个字符串,表示x轴的名称(标签) plot.ylabel() 传入一个字符串,表示y轴的名称(标签) plot.xticks() 传入一个列表,表示x轴的各个刻度的值(刻度为类别型数据时使用) plot.yticks() 传入一个列表,表示y轴的各个刻度的值(刻度为类别型数据时使用) plot.xlim() 传入一个列表或者两个数,表示x轴的取值范围(刻度为数字型数据时使用) plot.ylim() 传入一个列表或者两个数,表示y轴的取值范围(刻度为数字型数据时使用) plt.grid() 不需要传入参数,使直角坐标系显示网格 plot函数的设置画布的语法及部分参数:
- 画布类似画画时的画板,决定了图形的大小,默认的画布为白色。
- 在Matplotlib中,
set_canvas()
是figure模块的一个方法,用于设置包含整个图形的画布 - 语法: polt.figure(figsize,···)
参数 | 作用 |
xlim | 用于设置画布的长度范围 |
ylim | 用于设置画布的宽度范围 |
log | 用于设置是否对数据进行对数变换 |
main | 用于设置画布的主标题 |
sub | 用于设置子标题 |
xlab | 用于设置x轴的标签 |
ylab | 用于设置y轴的标签 |
ann | 用于设置注释的位置和样式 |
axes | 用于设置是否显示坐标轴 |
frame.plot | 用于设置是否显示边框 |
panel.first | 用于设置面板的第一行是否显示 |
panel.last | 用于设置面板的最后一行是否显示 |
asp | 用于设置面板的比例 |
xgap.axis | 用于设置x轴的间隙 |
ygap.axis | 用于设置y轴的间隙 |
四.常见图形及绘图方法
折线图及其参数:
折线图能看出时间序列的数据的波动趋势
绘制函数:plt.plot(x,y,color,linestyle,linewidth,marker,markersize
···)
x
:x轴数据,传参数值时不要写参数名x。y
:y轴数据传参数值时不要写参数名y。- color:图形颜色,接受十六进制颜色代码、颜色英文首字母等。
linestyle
: 指定折线的类型,可以是实线、虚线、点虚线、点点线等,默认为实线。linewidth
: 指定折线的宽度。marker
: 可以为折线图添加点,该参数是设置点的形状。markersize
: 设置点的大小。markeredgecolor
: 设置点的边框色。
实例:
from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
plt.plot(x,y)
plt.show()
运行结果如下:
饼图及其参数:
饼图能看出给类项数据在总计中的占比
绘制函数:plt.pie(x,explode,labels,colors,autopct,pctdistance···)
x
:各个饼块的尺寸。类1维数组结构。explode
:每个饼块相对于饼圆半径的偏移距离,取值为小数。类1维数组结构。默认值为None。labels
:每个饼块的标签。字符串列表。默认值为None。colors
:每个饼块的颜色。类数组结构。默认值为None,使用当前色彩循环。autopct
:饼块内标签。None 或字符串或可调用对象。默认值为None 。如果值为格式字符串,标签将被格式化,如果值为函数,将被直接调用。pctdistance
:饼块内标签与圆心的距离。浮点数。默认值为0.6 ,autopct 不为None 该参数生效。shadow
:饼图下是否有阴影。布尔值。默认值为False。labeldistance
:饼块外标签与圆心的距离。浮点值或None 。默认值为1.1 。如果设置为None ,标签不会显示,但是图例可以使用标签。startangle
:饼块起始角度。浮点数。默认值为0 ,即从x 轴开始。角度逆时针旋转。radius
:饼图半径。浮点数。默认值为1。
实例:
import matplotlib.pyplot as plt
labels = ['A', 'B', 'C']
sizes = [10, 20, 30]
colors = ['red', 'blue', 'green']
plt.pie(sizes, labels=labels, colors=colors, autopct='%.1f%%', pctdistance=0.4, shadow=False, labeldistance=1.1, startangle=120, radius=1)
plt.show()
运行结果如下:
散点图及其参数:
散点图能查看两个序列数据之间的相关关系
绘制函数:plt.csatter(x,y,c,marker,cmap,norm,alpha,linewidths···)
x
和y
:长度相同的数组,即我们即将绘制散点图的数据点,输入数据。s
:点的大小,默认20,也可以是个数组,数组每个参数为对应点的大小。c
:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。marker
:点的样式,默认小圆圈 'o',可以设置为'*','+'等。cmap
:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。norm
:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。vmin
和vmax
:亮度设置,在 norm 参数存在时会忽略。alpha
:透明度设置,0-1 之间,默认 None,即不透明。linewidths
:标记点的长度。edgecolors
:颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。plotnonfinite
:布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。**kwargs
:其他参数。
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
x = np.random.rand(10)
y = np.random.rand(10)
z = np.random.rand(10)
# 绘制散点图
plt.scatter(x, y, s=50, c='blue', alpha=0.5, marker='o')
plt.scatter(x, z, s=200, c='red', alpha=0.5, marker='x')
plt.scatter(z, y, s=200, c='green', alpha=0.5, marker='s')
# 添加标题和标签
plt.title('Multiple scatter plots')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
运行结果如下:
柱形图及其参数:
柱形图能查看各项数据的大小差异
绘制函数:plt.bar(x,heught,width,bottom,align,data···)
x
: 柱子在x轴上的坐标,数据类型为int或float类型。height
: 柱子的高度,即y轴上的坐标,数据类型为int或float类型。width
: 柱子的宽度,取值在0~1之间,默认为0.8。bottom
: 柱状图的起始位置,也就是y轴的起始坐标,数据类型为float类型。align
: 柱状图的中心位置,取值为'center'
或'edge'
,默认为'center'
。data
: 数据集,可以是一个标量序列,也可以是一个包含多个数据的列表。color
: 柱状图颜色,可以是一个颜色值,也可以是一个颜色列表,表示所有柱子使用同一颜色,或者每个柱子使用不同颜色。linewidths
: 边框宽度,数值越大,线条越粗。tick_label
: 下标标签,可以用来标记柱状图的编号或名称。log
: 是否使用科学计数法表示y轴数据,取值为True
或False
。orientation
: 柱状图是竖直还是水平,取值为'vertical'
或'horizontal'
。实例:
实例:
import matplotlib.pyplot as plt
# 创建数据
x = ['a', 'b', 'c', 'd', 'e']
height1 = [1, 3, 5, 7, 9]
width1 = [0.5, 1.5, 0.8, 1.2, 0.7]
height2 = [2, 4, 6, 8, 10]
width2 = [0.3, 0.4, 0.6, 0.8, 0.5]
# 绘制柱形图
fig, ax = plt.subplots()
rects1 = ax.bar(x, height1, width=width1, label='Height 1, Width 1')
rects2 = ax.bar(x, height2, width=width2, bottom=0.5, label='Height 2, Width 2')
# 添加标签和标题
ax.set_xlabel('X axis label')
ax.set_ylabel('Y axis label')
ax.set_title('Bar chart with multiple parameters')
ax.legend()
# 显示图形
plt.show()
运行结果如下:
直方图及其参数:
直方图可以查看序列数据的分布情况
绘制函数:plt.hist(x,bins,range,density,weights,color,lanes···)
x
: 表示要绘制直方图的数据,可以是一个一维数组或列表。bins
: 可选参数,表示直方图的箱数。默认为10。range
: 可选参数,表示直方图的值域范围,可以是一个二元组或列表。默认为None,即使用数据中的最小值和最大值。density
: 可选参数,表示是否将直方图归一化。默认为False,即直方图的高度为每个箱子内的样本数,而不是频率或概率密度。weights
: 可选参数,表示每个数据点的权重。默认为None。cumulative
: 可选参数,表示是否绘制累积分布图。默认为False。bottom
: 可选参数,表示直方图的起始高度。默认为None。histtype
: 可选参数,表示直方图的类型,可以是'bar'、'barstacked'、'step'、'stepfilled'等。默认为'bar'。align
: 可选参数,表示直方图箱子的对齐方式,可以是'left'、'mid'、'right'。默认为'mid'。orientation
: 可选参数,表示直方图的方向,可以是'horizontal'(水平)或 'vertical'(垂直)。默认为'vertical'。rwidth
: 可选参数,表示直方图的宽度比例。默认为None,即所有直方图的宽度相等。如果设置了此参数,那么直方图的宽度将按比例缩放。log
: 可选参数,表示是否对数据进行对数变换。默认为False,即不对数据进行对数变换。如果设置为True,那么直方图的高度将按照对数比例进行缩放。color
: 可选参数,表示直方图的颜色。默认为'g',即绿色。如果设置了此参数,那么直方图的颜色将变为指定的颜色。label
: 可选参数,表示直方图的标签。默认为None。如果设置了此参数,那么直方图的标签将被添加到图形上方。stacked
: 可选参数,表示是否堆叠直方图。默认为False,即不堆叠直方图。如果设置为True,那么所有的直方图将被叠加在一起。normed
: 可选参数,表示是否归一化直方图。默认为False,即不归一化直方图。如果设置为True,那么直方图的高度将除以每个箱子内的样本数之和。
实例:
import numpy as np
import matplotlib.pyplot as plt
# 生成随机数据
np.random.seed(123)
data = np.random.normal(loc=0, scale=1, size=1000)
# 绘制直方图
plt.hist(data, bins=30, density=True, alpha=0.5)
# 设置x轴和y轴标签
plt.xlabel('Data')
plt.ylabel('Frequency')
# 显示图像
plt.show()
运行结果如下:
箱型图及其参数:
箱型图可以通过圆点显示序列异常值
绘制函数:plt.boxplot(x,notch,sym,vert,whis,positions···)
x
: 指定要绘制箱线图的数据。notch
: 是否是凹口的形式展现箱线图,默认非凹口。sym
: 指定异常点的形状,默认为+号显示。vert
: 是否需要将箱线图垂直摆放,默认垂直摆放。whis
: 指定上下须与上下四分位的距离,默认为1.5倍的四分位差。positions
: 指定箱线图的位置,默认为[0,1,2…]。widths
: 指定箱线图的宽度,默认为0.5。patch_artist
: 是否填充箱体的颜色,默认不填充。meanline
: 是否用线的形式表示均值,默认用点来表示。showmeans
: 是否显示均值,默认不显示。showcaps
: 是否显示箱顶,默认显示。showbox
: 是否显示箱体,默认显示。showfliers
: 是否显示离群值,默认不显示。boxprops:
用于设置箱线图的属性,如颜色、线条样式等。labels:
用于设置箱线图中的标签。flierprops
:用于设置离群值的属性,如颜色、大小等。medianprops
:用于设置中位数的属性,如颜色、大小等。meanprops
:用于设置均值的属性,如颜色、大小等。capropes:
用于设置盖子的属性,如颜色、大小等。whiskerprops
:用于设置线的属性,如颜色、大小等。
实例:
import matplotlib.pyplot as plt
import numpy as np
#创建随机数据
data = np.random.normal(size=(100, 3))
#绘制箱型图
plt.boxplot(data, positions=[1, 2, 3])
#设置箱线图属性
plt.axhline(y=np.median(data), color='b', linestyle='--')
plt.axvline(x=np.percentile(data, 75), color='r', linestyle=':')
#显示图像
plt.show()
运行结果如下:
五.总结
Matplotlib是一个功能强大的Python绘图库,用于可视化数据。它具有丰富的绘图功能,可用于绘制线图、散点图、柱状图、饼图等多种图形。该库提供了丰富的自定义选项,使用户可以轻松地调整图形的样式和布局。Matplotlib也可以与NumPy和Pandas等其他科学计算库一起使用,方便数据的处理和可视化。总之,Matplotlib是一款强大而灵活的绘图工具,为用户提供了丰富的选择和优秀的可视化效果。