1.概述
Matplotlib :是一个功能强大的数据可视化开源 Python 库,也是 Python 中使用的最多的图形绘图库,可以创建静态,动态,交互式的 2D(包括 3D )的图表
1.1 入门程序
以绘制单坐标系折线图为例
1.1.1 matplotlib.pyplot 模块
import matplotlib.pyplot as plt
1.1.2 图形绘制流程
1.创建画布:plt.figure()
plt.figure() :用于创建画布(Figure 对象)
plt.figure(num=x, figsize=(m, n), dpi=y)
常用参数:
- num :画布的唯一标识(编号 / 名字),默认值 None,可以是**整数 或者 字符串,**不传则自动递增编号
- figsize:指定画布的大小(宽,高),单位:英寸
- dpi:画布分辨率(每英寸像素,代表画布清晰度)
- facecolor:画布背景颜色,默认白色 "white"
- edgecolor:画布边框颜色,默认白色 "white"
- frameon:是否绘制画布边框,默认为 True
- tight_layout:是否自动调整子图间距,避免标签重叠,默认 False
- return:返回 fig 对象
基础用法:
**1.创建默认画布:**不指定任何参数,创建一个默认大小、默认编号的空白画布
# 创建默认画布
plt.figure()
2.指定相关参数
plt.figure(num=1, figsize=(8, 4), dpi=120, facecolor="white", frameon=False)
3.管理多个独立画布
# 创建编号为1的画布
plt.figure(num=1, figsize=(6,3))
# 创建编号为2的画布
plt.figure(num=2, figsize=(6,3))
# 切回1号画布,继续添加内容
plt.figure(num=1)
.....
4. 手动添加子图
plt.figure()只创建空画布,需通过 add_subplot() 手动添加子图,适合灵活定制布局
# 1.创建画布
fig = plt.figure(figsize=(8, 6))
# 2.添加2行1列的第1个子图
ax1 = fig.add_subplot(2,1,1)
ax1.plot([1,2,3], [1,2,3])
# 3.添加2行1列的第2个子图
ax2 = fig.add_subplot(2,1,2)
ax2.bar(['A','B','C'], [3,2,5])
# 4.显示图像
plt.show()
plt.figure() vs plt.subplots()
- plt.figure():仅创建空白画布,子图需手动逐个添加,适合高度自定义布局的场景。
- plt.subplots():同时创建画布 + 子图网格,返回 (fig,axes)元组,是日常快速绘图的更常用方式
注意事项:
- 隐式创建:即使不手动调用 plt.figure(),直接执行 plt.plot()等绘图命令,Matplotlib 也会自动创建一个默认 figure。
- 画布复用:重复调用 plt.figure(num=1)不会新建画布,而是将 1 号画布设为当前活动画布,后续绘图会叠加在它上面
2.绘制图像:plt.plot(x,y)
plt.plot(x,y): 是 Matplotlib 中最常用的折线 / 曲线绘制函数,用于在当前画布上根据 x、y 坐标序列绘制连线图,支持丰富的样式定制(颜色、线型、标记、线宽等)
核心语法:
plt.plot(x, y, fmt='', **kwargs)
核心参数说明:
| 参数 | 说明 |
|---|---|
x |
可选 ,x 轴坐标序列(列表、numpy 数组等)。不传时默认自动生成 [0, 1, 2, ..., len(y)-1] 作为 x 值。 |
y |
必选 ,y 轴坐标序列,长度必须与 x 一致。 |
fmt |
可选 ,格式简写字符串,一键设置「颜色 + 线型 + 数据标记」,例如 'r--o'。 |
**kwargs |
关键字参数,精细控制线条、标记的样式。 |
常用样式关键字参数:
| 参数 | 简写 | 说明 |
|---|---|---|
color |
c |
线条颜色,支持颜色名、十六进制、RGB 元组 |
linestyle |
ls |
线型:'-' 实线、'--' 虚线、':' 点线、'-.' 点划线 |
linewidth |
lw |
线宽,单位为磅,默认 1.5 |
marker |
- | 数据点标记:'o' 圆、's' 方、'^' 三角、'*' 星号、'.' 点 |
markersize |
ms |
标记大小 |
markerfacecolor |
mfc |
标记填充颜色 |
markeredgecolor |
mec |
标记边框颜色 |
label |
- | 线条标签,配合 plt.legend() 显示图例 |
alpha |
- | 透明度,取值 0~1 |
fmt 格式字符串规则
fmt 是快速样式简写,格式为【颜色】【线型】【标记】,三部分顺序任意、均可省略 r
- 颜色简写:r 红、g 绿、b 蓝、k 黑、y 黄、c 青、m 品红、w 白
- 线型简写:- 实线、-- 虚线、:点线、-. 点划线
- 标记简写:o 圆、s 方、^ 上三角、* 星、. 点、+ 加号

基础用法:
1. 一次绘制多条曲线
多次调用 plt.plot() 会在同一张图上叠加:
x = [1, 2, 3, 4]
plt.plot(x, [1, 4, 9, 16], 'r-', label='二次')
plt.plot(x, [1, 8, 27, 64], 'b--', label='三次')
plt.show()
也可以在一个 plot 里传入多组 x,y,fmt:
x = [1, 2, 3, 4]
plt.plot(x, [1,4,9,16], 'r-', x, [1,8,27,64], 'b--')
plt.show()
返回值 :返回一个 Line2D 对象列表(每一条线对应一个Line2D对象),可以通过接收返回值来后续动态修改线条属性
注意事项
- 长度匹配:x 和 y 的长度必须完全一致,否则会报错
- 连线顺序:plot 会严格按照数据点的顺序连接,若 x 无序会出现 "乱线",需先对数据排序
3.显示图像:plt.show()
**plt.show():**所有绘图逻辑完成后,最后调用一次 plt .show()显示图形
1.1.3 入门程序案例

1.2 图表结构

2.基础绘图功能
2.1 中文显示问题
Matplotlib 默认字体 DejaVu Sans 不包含中文、日文等东亚字符的字形,无法渲染中文,最终显示为空心方框,因此需要给 Matplotlib 指定一个包含中文字形的字体
解决方案:通过 rcParams全局设置默认字体,一次设置,脚本内所有绘图自动生效,是日常使用的首选方案
# 1. 修复中文显示问题
plt.rcParams['font.sans-serif'] = [
'SimHei', # Windows 黑体
'Microsoft YaHei', # Windows 微软雅黑
'PingFang SC', # Mac 苹方
'Heiti SC', # Mac 黑体
'WenQuanYi Micro Hei' # Linux 文泉驿微米黑
]
# 2. 修复负号显示问题
plt.rcParams['axes.unicode_minus'] = False
2.2 图形辅助功能
2.2.1 绘制 X,Y 轴刻度与标签
plt.xticks() :用于查询或设置 x 轴刻度位置与刻度标签的核心函数,可自定义刻度显示的位置、文本内容、旋转角度、字体样式等
注意:plt.yticks()与之完全对称,作用于 y 轴,用法完全一致
核心语法:
# 1. 查询:获取当前 x 轴的刻度位置和标签
locs, labels = plt.xticks()
# 2. 设置:修改刻度位置、标签及样式
plt.xticks(ticks=x_ticks, labels=None, **kwargs)
核心参数:
| 参数 | 说明 |
|---|---|
ticks |
刻度位置序列(列表 / 数组),指定 x 轴上哪些位置显示刻度。传入空列表 可隐藏所有 x 轴刻度 |
labels |
可选,与 ticks 一一 对应的刻度文本标签,长度必须和 ticks 相同。不传则默认使用刻度的数值作为标签 |
**kwargs |
样式控制参数,同时作用于所有刻度标签 |
常用样式关键字参数:
| 参数 | 说明 |
|---|---|
rotation |
标签旋转角度,单位为度,常用 45、90,解决标签重叠 |
fontsize |
标签字号,如 10、'small' |
color |
标签文字颜色 |
ha |
水平对齐方式,旋转标签时推荐设为 'right' 避免错位 |
va |
垂直对齐方式 |
fontweight |
字重,如 'bold' |
**返回值:**无参调用时返回元组 (locs,labels):
- locs:刻度位置的 numpy 数组
- labels:刻度标签的 Text 对象列表
注意事项:
- 长度匹配:labels 的长度必须与 ticks 完全一致,否则会报错。
- 标签截断:旋转标签后常出现底部文字被画布截断,配合 plt.tighy_layout() 可自动修正边距
- 数值 vs 文本:ticks 必须是数值型位置,labels 是显示用的文本
- 层级对应:plt.xticks()是 pyplot 层级的函数,对应面向对象写法中的 ax.set_xticks()+ ax.set_xticklabels()
案例如下:

2.2.2 绘制网格
plt.grid() :是 Matplotlib 中用于控制坐标轴网格线的函数,默认状态下网格是关闭的,调用该函数可快速开启或自定义网格样式
语法如下:
plt.grid(b=None, which='major', axis='both', **kwargs)
核心参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
b |
None |
网格显示开关: * True:开启网格 * False:关闭网格 * 不传 / None:切换当前显示状态 |
which |
'major' |
控制作用于哪类刻度网格: * 'major':仅主刻度网格(默认) * 'minor':仅次刻度网格- * 'both':主刻度 + 次刻度网格 |
axis |
'both' |
控制显示哪个轴的网格: * 'both':x、y 轴网格都显示 * 'x':仅显示纵向网格(对应 x 轴刻度) * 'y':仅显示横向网格(对应 y 轴刻度) |
**kwargs |
- | 网格线样式参数,常用:color、linestyle、linewidth、alpha |
常用样式参数:
- color:网格线颜色,推荐浅灰色如
'#e5e5e5',避免抢夺数据注意力 - linestyle / ls:线型,同 plt.plot(),常用
'-'实线、'--'虚线、':'点线 - linewidth / lw:线宽,默认 0.8,一般设 0.5~1 视觉更柔和
- alpha:透明度,取值 0~1,设 0.5~0.7 可降低网格存在感
注意事项
-
次刻度依赖: which = 'minor' 或 'both' 时,必须先执行 plt.minorticks_on()开启次刻度,否则次网格不会显示
-
视觉优先级:网格是辅助元素,建议用浅色系、低透明度,避免喧宾夺主掩盖数据曲线。
-
面向对象写法:对应 ax.grid(),参数完全一致,是子图级别控制网格的标准写法
-
全局默认设置:可通过 rcParams 统一设置全局网格样式,脚本内所有图自动生效:
plt.rcParams['grid.color'] = '#e0e0e0'
plt.rcParams['grid.linestyle'] = '--'
plt.rcParams['grid.alpha'] = 0.7
案例如下:

2.2.3 添加标题
plt.title() :是 Matplotlib 中用于设置当前坐标轴(Axes)图表标题的核心函数,默认显示在图表顶部居中位置,支持自定义字体样式、对齐位置、上下间距等
语法如下:
plt.title(label, fontdict=None, loc='center', pad=None, **kwargs)
核心参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
label |
必选 | 标题文本字符串,支持换行 \n、LaTeX 数学公式。 |
fontdict |
None |
字体属性字典,统一控制标题的字体、大小、颜色、粗细等。 |
loc |
'center' |
标题水平位置:- 'center':居中(默认)- 'left':左对齐- 'right':右对齐 |
pad |
None |
标题与图表顶部的内边距,单位为磅,值越大标题离图表越远。 |
**kwargs |
- | 额外样式参数,可直接覆盖 fontdict 设置,常用:fontsize、color、fontweight、y(垂直位置)、rotation(旋转角度)等。 |
fontdict 常用键值:
- family:字体,如 "SimHei"
- size:字号,如 14、"large"
- weight:字重,如 "bold"、"normal"
- color:文字颜色
- style:字体风格,如 "italic" 斜体
案例如下:

2.2.4 添加x轴、y轴标签
plt.xlabel() :是 Matplotlib 中用于设置 x 轴(横轴)轴标签的核心函数
语法如下:
plt.xlabel(xlabel, fontdict=None, loc='center', labelpad=None, **kwargs)
注意:plt.ylabel()与之完全对称,作用于 y 轴,用法完全一致
核心参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
xlabel |
必选 | x 轴标签文本字符串,支持换行 \n、LaTeX 数学公式。 |
fontdict |
None |
字体属性字典,统一控制标签的字体、字号、颜色、字重等样式。 |
loc |
'center' |
标签水平位置: - 'center':居中(默认) - 'left':左对齐 - 'right':右对齐 |
labelpad |
None |
标签与 x 轴刻度之间的内边距,单位为磅;值越大,标签离坐标轴越远。 |
**kwargs |
- | 额外样式关键字参数,可覆盖 fontdict 设置,常用:fontsize、color、fontweight、rotation、alpha 等。 |
fontdict 常用键值:
- family:字体,如 "SimHei"
- size:字号,如 14、"large"
- weight:字重,如 "bold"、"normal"
- color:文字颜色
- style:字体风格,如 "italic" 斜体
案例如下:

2.2.5 添加图例
plt.legend() :是 Matplotlib 中用于添加图例的核心函数,图例用于标识图表中不同数据系列的含义
基础用法:
1. 自动匹配标签
在绘图函数( plt.plot / plt.scatter / plt.bar 等)中设置 label 参数,调用 plt.legend() 即可自动生成图例
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x), label='正弦函数 sin(x)')
plt.plot(x, np.cos(x), label='余弦函数 cos(x)')
plt.legend() # 自动读取所有图形的 label 生成图例
plt.show()
2. 手动指定标签
不在绘图时设置 label ,直接在 legend() 中传入标签列表,标签顺序必须与绘图顺序严格一致
plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x))
plt.legend(['正弦函数', '余弦函数'])
注意:该方式在复杂图表中容易对应错乱,推荐在绘图时便设置 label 参数
核心参数:
| 参数 | 功能说明 | 常用取值 / 示例 |
|---|---|---|
loc |
图例在图内的位置 | 'best'(默认,自动选最优位置)、'upper right'、'upper left'、'lower right'、'lower left'、'center'、'right' |
bbox_to_anchor |
图例锚点坐标,用于偏移图例(常配合 loc 将图例放在图外) |
(1.05, 1) 图右侧、(0.5, -0.1) 图底部 |
ncol |
图例的列数 | 整数,默认 1;设为 2 则两列横向排列 |
title |
图例的标题 | 字符串,如 '曲线类型' |
fontsize |
图例标签文字大小 | 数字 或 'small' / 'x-large' |
title_fontsize |
图例标题文字大小 | 数字 |
frameon |
是否显示图例边框 | True(默认)/ False |
facecolor |
图例背景颜色 | 颜色值,如 '#f0f0f0'、'white' |
edgecolor |
图例边框颜色 | 颜色值,如 'gray' |
handlelength |
图例标识(线 / 点 / 块)的长度 | 浮点数,默认 2.0 |
labelspacing |
图例标签之间的垂直间距 | 浮点数,默认 0.5 |
loc 参数:

案例如下:

2.2.6 多坐标系显示(面向对象的画图方式)
Matplotlib 中,一个 Axes 对象 对应一个独立的绘图坐标系(包含 x 轴、y 轴、绘图区域),多坐标系就是在同一张 Figure 画布上创建多个 Axes
Axes : 是 Matplotlib 中的绘图坐标系对象
Axes对象创建方式:
方式 适用场景 代码示例 plt.subplots()批量创建规则网格子图(最常用) fig, axes = plt.subplots(2, 2),返回 Axes 数组fig.add_subplot()逐个添加规则子图 ax = fig.add_subplot(2, 2, 1)
多坐标系实现方式:plt.subplots()
plt.subplots() :一次性批量创建规则的行列网格子图,返回画布对象 fig 和坐标系数组 axes ,是面向对象绘图的核心入口
核心参数:
- nrows / ncols:子图的行数 / 列数
- sharex / sharey :是否共享 x/y 轴刻度
- False:默认,每个子图独立刻度
- True:所有子图共享完全相同的刻度范围
- 'row':同一行的子图共享刻度行内共享:
- 'col' :同一列的子图共享刻度
- figsize:画布大小,格式为 (宽,高),单位英寸
- squeeze :返回数组的维度压缩
- True(默认):单个子图返回单个 Axes 对象,1 行 / 1 列返回一维数组,多行多列返回二维数组
- False:无论多少子图,永远返回二维数组 axes行, 列,适合统一循环绘图
- dpi:画布分辨率
plt.subplots() 返回(fig,axes)两个对象,axes 的结构随子图数量变化,总体来讲,axes返回值有三种形态:
- 单个子图:nrows=1,ncols=1时,axes 是单个 Axes 对象,不是数组
- 单行或单列(1×N 或 N×1):axes 是一维数组
- 多行多列(M×N,M>1 且 N>1):axes 是二维数组,索引格式为 axes行号,列号
| plt 写法 | Axes 写法 | 功能 |
|---|---|---|
plt.title() |
ax.set_title() |
设置子图标题 |
plt.xlabel() |
ax.set_xlabel() |
设置 x 轴标签 |
plt.xticks() |
ax.set_xticks() |
设置 x 轴刻度 |
plt.legend() |
ax.legend() |
添加图例 |
plt.grid() |
ax.grid() |
显示网格 |
案例如下:

2.3 图形保存问题
plt.savefig() : 是 Matplotlib 中用于将当前绘制的图形保存为本地文件的核心函数,支持 PNG、JPG、SVG、PDF、EPS 等多种格式,是数据可视化导出结果的核心操作
语法如下:
# 1. 绘制图形
*************
# 2. 保存图形(必须在 plt.show() 之前调用)
plt.savefig("my_plot.png")
# 3. 显示图形
plt.show()
核心参数:
| 参数 | 说明 | 常用取值 |
|---|---|---|
fname |
保存的文件路径 + 名称,后缀自动决定保存格式 | "fig.png"、"./output/chart.pdf" |
dpi |
图像分辨率(每英寸点数),数值越高越清晰,文件越大 | 默认100;印刷 / 论文建议300 |
bbox_inches |
裁剪图形周边空白边距 | "tight"(自动紧裁剪);None(默认不裁剪) |
pad_inches |
紧裁剪时,图形与边框的内边距 | 默认0.1;设为0可极致裁剪 |
transparent |
是否保存为透明背景 | True/False(默认) |
facecolor |
图片背景色 | "white"、"#f0f0f0" |
format |
强制指定保存格式,优先级高于文件名后缀 | "png"、"pdf"、"svg"、"jpg" |
quality |
JPG 格式的画质,仅对 JPG 有效 | 1~100,默认95 |
注意事项:
- savefig()必须在 show()之前:plt.show()会清空画布,如果放在 show()后面会保存空白图片
- 适用英文路径保存 :Matplotlib 对中文路径兼容性较差,建议:
- 优先适用英文路径和文件名
- 若必须用中文,可使用路径对象包裹
3.常见图形绘制
3.1 官方案例库
https://matplotlib.org/stable/gallery/index.html

3.2 常见图形种类及意义
3.2.1 折线图
折线图:以折线的上升或下降来表示统计数量的增减变化
特点 :显示数据的变化趋势,反映事物的变化情况
api:plt.plot()

3.2.2 柱状图
柱状图:用长方形柱子的高度(纵向)/ 长度(横向)代表数值大小的统计图
特点 :绘制离散的数据,能够直观看出各个数据的大小,用来对比不同类别之间的数据
api :plt.bar()
语法如下:
plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
核心参数:
- x :x 轴坐标,可以是列表 / 数组,柱子的位置
- height:柱子高度,y 值
- width:柱子宽度,默认 0.8
- bottom:柱子底部起始 y 值,做堆叠柱状图用,默认为 0
- align:柱形图与 x 坐标的对齐方式,'center' 以 x 位置为中心,这是默认值。 'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'
- color:柱子颜色
- edgecolor:柱子边框颜色
- **kwargs::其他参数
案例如下:
# 1.创建画布
fig1 = plt.figure(num="柱状图", figsize=(10, 5), dpi=80)
# 2.绘制图形
# 2.1 准备数据
x = ["老虎", "熊猫", "狮子", "大象", "猴子"]
y = [100, 50, 200, 300, 400]
# 2.2 绘制柱状图
plt.bar(x, y, color="blue", width=0.8, label='动物')
# 2.3 添加标题, x,y轴标签, 图例, 网格线
plt.title('鲁国动物留存量柱状图', fontsize=16, fontweight='bold')
plt.xlabel('动物', fontsize=14, fontweight='bold')
plt.ylabel('数量', fontsize=14, fontweight='bold')
plt.legend(loc=0, bbox_to_anchor=(1, 1))
plt.grid(color='gray', linestyle='--', linewidth=0.5, alpha=0.5)
# 2.4 设置x轴,y轴刻度及其刻度标签
x_ticks = ["老虎", "熊猫", "狮子", "大象", "猴子"]
y_ticks = [50, 100, 150, 200, 250, 300, 350, 400, 450]
plt.xticks(x_ticks, rotation=45)
plt.yticks(y_ticks, rotation=45)
# 3.显示图像
plt.show()

3.2.3 直方图
直方图:由一系列高度不等的纵向条纹或线段表示数据的分布情况;一般用横轴表示数据范围,纵轴表示分布情况
特点 :绘制连续性的数据展示一组 / 多组数据的分布状况
api :plt.hist()
语法如下:
plt.hist(x, bins=10, range=None, density=False)
核心参数:
- x:必填,一维数组 / 列表,待统计的原始数据
- bins :分箱设置,控制区间数量和边界,默认为10
- 整数:自动将数据范围均分为 n 个区间
- 序列:手动指定每个分箱的边界
- 字符串:自动选择分箱算法,可选 "auto","fd","sturges","rice" 等
- range:元组(min,max),只统计该范围内的数据,超出部分忽略,需配合整数型 bins 使用
- density :布尔值,默认 False
- False:纵轴为频数(每个区间内的数据点总数)
- True:纵轴为概率密度,所有区间的面积总和为 1
- normalize:布尔值,默认 True,自动将数值归一化为占比总和为 1;设为 False 时,饼图总面积对应数值总和
- autopct:设置百分比显示格式,常用 "%1.1f%%(保留 1 位小数);也可传入函数自定义格式。
案例:
# 1.创建画布
fig1 = plt.figure(num="直方图", figsize=(10, 5), dpi=80)
# 2.绘制图形
# 2.1 准备数据
data = np.random.randn(200)
# 2.2 绘制直方图
plt.hist(data, bins=10)
# 2.3 添加标题, x,y轴标签, 图例, 网格线
plt.grid(color='gray', linestyle='--', linewidth=0.5, alpha=0.5)
plt.title('随机正态分布直方图', fontsize=16, fontweight='bold')
plt.xlabel('随机值', fontsize=14, fontweight='bold')
plt.ylabel('数量', fontsize=14, fontweight='bold')
# 2.4 设置x轴,y轴刻度及其刻度标签
x_ticks = [-4, -3, -2, -1, 0, 1, 2, 3, 4]
y_ticks = [0 ,10, 20, 30, 40 ,50]
plt.xticks(x_ticks)
plt.yticks(y_ticks)
# 3.显示图像
plt.show()

3.2.4 饼图
饼图:用于表示不同分类的占比情况,通过弧度大小来对比各种分类
特点:分类数据的占比情况
api :plt.pie()
语法如下:
plt.pie(x, labels=None, radius=1, colors=None)
核心参数:
- x:必填,一维数组,每个类别的数值;饼图会自动计算各部分占比
- labels:列表,长度与 x 一致,每个饼块的类别名称标签
- radius:数值,饼图的半径大小,默认 1
- colors:列表,每个饼块的填充颜色
案例如下:
# 1.创建画布
fig1 = plt.figure(num="饼图", figsize=(10, 5), dpi=80)
# 2.绘制图形
# 2.1 准备数据
sizes = [100, 200, 400, 20, 300]
labels = ['A', 'B', 'C', 'D', 'E']
# 2.2 绘制直方图
plt.pie(sizes, labels=labels, radius=1, colors=['red', 'blue', 'green', 'yellow', 'purple'], autopct='%1.1f%%')
# 2.3 添加标题
plt.title('饼状图', fontsize=16, fontweight='bold', loc="center")
# 3.显示图像
plt.show()

3.2.5 散点图
散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式
特点 :用于展示两个连续变量的相关关系、数据聚类或分布特征
api :plt.scatter(x,y)
语法如下:
plt.scatter(x, y, **kwargs)
核心参数:
- x, y:必填,长度相同的一维数组 / 列表,分别对应每个数据点的横、纵坐标
- s :点的面积(单位:像素 ²),用于映射第三维数值
- 传入标量:所有点统一大小,默认值约为 20
- 传入数组:每个点对应不同大小,可实现气泡图
- c :点的颜色,用于映射第四维数值,三种常用用法:
- 单一颜色字符串:所有点同色
- 颜色列表:逐个指定每个点的颜色
- 数值数组:配合 cmap 生成颜色梯度,展示连续数值分布
- marker :点的形状,默认
'o'(实心圆)。常用样式:'s'正方形、'^'上三角、'*'星形、'+'十字、'.'极小点
案例:
# 1.创建画布
fig1 = plt.figure(num="散点图", figsize=(10, 5), dpi=80)
# 2.绘制图形
# 2.1 准备数据
x = [100, 200, 300, 400, 500]
y = [5, 9, 12, 20, 10]
# 2.2 绘制散点图
plt.scatter(x, y, color="blue")
# 2.3 添加标题, x,y轴标签, 图例, 网格线
plt.grid(color='gray', linestyle='--', linewidth=0.5, alpha=0.5)
plt.title('客户消费与所给小费散点图', fontsize=16, fontweight='bold')
plt.xlabel('消费', fontsize=14, fontweight='bold')
plt.ylabel('小费', fontsize=14, fontweight='bold')
# 3.显示图像
plt.show()
