Matplotlib

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)元组,是日常快速绘图的更常用方式

注意事项:

  1. 隐式创建:即使不手动调用 plt.figure(),直接执行 plt.plot()等绘图命令,Matplotlib 也会自动创建一个默认 figure。
  2. 画布复用:重复调用 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对象),可以通过接收返回值来后续动态修改线条属性

注意事项

  1. 长度匹配:x 和 y 的长度必须完全一致,否则会报错
  2. 连线顺序: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 对象列表

注意事项:

  1. 长度匹配:labels 的长度必须与 ticks 完全一致,否则会报错。
  2. 标签截断:旋转标签后常出现底部文字被画布截断,配合 plt.tighy_layout() 可自动修正边距
  3. 数值 vs 文本:ticks 必须是数值型位置,labels 是显示用的文本
  4. 层级对应: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 可降低网格存在感

注意事项

  1. 次刻度依赖: which = 'minor' 或 'both' 时,必须先执行 plt.minorticks_on()开启次刻度,否则次网格不会显示

  2. 视觉优先级:网格是辅助元素,建议用浅色系、低透明度,避免喧宾夺主掩盖数据曲线。

  3. 面向对象写法:对应 ax.grid(),参数完全一致,是子图级别控制网格的标准写法

  4. 全局默认设置:可通过 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返回值有三种形态:

  1. 单个子图:nrows=1,ncols=1时,axes 是单个 Axes 对象,不是数组
  2. 单行或单列(1×N 或 N×1):axes 是一维数组
  3. 多行多列(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

注意事项:

  1. savefig()必须在 show()之前:plt.show()会清空画布,如果放在 show()后面会保存空白图片
  2. 适用英文路径保存 :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()
相关推荐
for_ever_love__2 天前
Matplotlib——把训练曲线和分布画出来
matplotlib·数据可视化·大模型开发·训练曲线
茶栀(*´I`*)8 天前
【Python数据可视化】Matplotlib从零到精通:图表核心解剖、多子图布局与三大经典图表实战
python·信息可视化·matplotlib
jzshmyt20 天前
我用 Python 从零“生成“了一个宇宙,然后让它观察自己(v14)
人工智能·pytorch·python·numpy·matplotlib·空间计算·scipy
小葱炖豆腐24 天前
python绘制excel折线图
python·excel·numpy·pandas·matplotlib
七灵微24 天前
【AI】代码实战- 基于时间序列的轴承检测1
人工智能·机器学习·ai·pandas·matplotlib
微小冷1 个月前
pyqt+matplotlib多进程图像刷新
pyqt·matplotlib·进程通信·多进程·queue·process
㳺三才人子2 个月前
初探 Data Analysis - Matplotlib
python·plotly·pandas·matplotlib
菜冻鱼2 个月前
Python-sklearn-特征工程
开发语言·人工智能·python·机器学习·numpy·matplotlib·sklearn
cui_ruicheng2 个月前
Python数据分析(十一):数据可视化与 Matplotlib
python·信息可视化·数据分析·matplotlib