文章目录
- [1. Matplotlib 初识](#1. Matplotlib 初识)
- [2. 图表"零件"](#2. 图表“零件”)
- [3. 创建图表的核心流程](#3. 创建图表的核心流程)
- [4. 折线图](#4. 折线图)
-
- [4.1 多条折线](#4.1 多条折线)
- [4.2 网格线样式](#4.2 网格线样式)
- [5. 柱状图](#5. 柱状图)
-
- [5.1 分组柱状图](#5.1 分组柱状图)
- [6. 饼状图](#6. 饼状图)
- [7. 子图布局](#7. 子图布局)
-
- [7.1 1×2 子图:柱状图 vs 饼状图并排对比](#7.1 1×2 子图:柱状图 vs 饼状图并排对比)
- [7.2 2×2 四宫格:四种图表同框](#7.2 2×2 四宫格:四种图表同框)
📁 代码讲义:Matplotlib.ipynb
📅 更新日期:2026-06-07
1. Matplotlib 初识
我一开始就被 matplotlib 这个名字难住了,其实把它拆开就很简单:Mat + plot + lib 。Mat 取自 Matlab一款以强大绘图能力著称的科学计算软件,plot 就是"绘图",lib 是 library(库)的缩写。连起来就是**"模仿 Matlab 风格的绘图库"**这样拆开记就好记多了。
那么Matplotlib到底是什么呢?
Matplotlib 是 Python 中使用最广泛的数据可视化开源库 ,通过 pip install matplotlib 就能安装。它可以创建静态图、动态图和交互式图表,不过我们现阶段学习的主要是静态图表也就是生成一张固定的 PNG 或 SVG 图片用于报告和展示。
注意:Matplotlib 默认字体不支持中文,标题或标签中出现中文会变成方框□□□,加下面两行即可解决(不用死记,知道有这回事、用到时复制就行)
pythonimport matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows 用黑体 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示异常
2. 图表"零件"
在写代码之前,先搞清楚一张图表到底由哪些"零件"组成。后面写的每一行代码,本质上都是在操控这些零件中的某一个。心中有这张"零件地图",学起来才不会云里雾里。

| 序号 | 组成部分 | 说明 |
|---|---|---|
| ① | Figure(画布) | 最外层容器,所有内容都画在上面,可以理解为"画纸" |
| ② | Axes(绘图区) | 画布中实际绘制数据的坐标系区域,一个画布可以有多个绘图区(子图),之后会介绍 |
| ③ | Title(标题) | 图表的标题,说明整张图在表达什么 |
| ④ | X/Y Axis(坐标轴) | 包含轴线、刻度、刻度标签、轴标签 |
| ⑤ | X/Y Label(轴标签) | 说明每个轴代表什么含义,如"时间(s)"、"销售额(万元)" |
| ⑥ | Ticks(刻度位置) | 刻度线在轴上的位置,是一个数值 |
| ⑦ | Tick Labels(刻度标签) | 刻度位置处显示的文字,可以是数字或自定义文字 |
| ⑧ | Grid(网格线) | 辅助读数的水平/垂直线 |
| ⑨ | Legend(图例) | 多条线或多组数据时,说明每条线的含义 |
⚠️ 最容易混淆的一对概念 :Ticks(刻度位置)和 Tick Labels(刻度标签)。很多人以为它们是一回事,其实不是Ticks 是"刻度线画在哪个数值位置",Tick Labels 是"那个位置显示什么字" 。比如你写
plt.yticks([2, 4, 6, 8], ['A', 'B', 'C', 'D']),前面的[2,4,6,8]是位置(决定线画在哪),后面的['A','B','C','D']是标签(决定人看到什么)。位置是数学坐标,标签是给人看的,两者可以完全不同。这个区分搞清楚了,后面设置刻度才不会乱。
简单的可以用下面用一段完整代码把上面九个部分全部可视化出来,体验一下:
python
plt.figure(figsize=(10, 6))
x = np.arange(1, 8)
y = [3, 5, 2, 8, 6, 9, 4]
plt.plot(x, y, marker='o', linewidth=2, markersize=8, label='销售额')
# ---- ③ 标题 ----
plt.title('某产品一周销售额趋势', fontsize=16, fontweight='bold')
# ---- ⑤ 轴标签 ----
plt.xlabel('星期', fontsize=12)
plt.ylabel('销售额(万元)', fontsize=12)
# ---- ⑥⑦ 刻度位置 + 刻度标签 ----
plt.xticks(x, ['周一', '周二', '周三', '周四', '周五', '周六', '周日'])
plt.yticks(range(0, 11, 2))
# ---- ⑧ 网格线 ----
plt.grid(True, linestyle='--', alpha=0.5)
# ---- ⑨ 图例 ----
plt.legend(loc='upper left', fontsize=11)
plt.show()
3. 创建图表的核心流程
无论画什么类型的图表,Matplotlib 的创建流程基本固定为以下五步:
① 创建画布 plt.figure(figsize=(10, 5))
② 准备数据 x = [...], y = [...] ← x 和 y 维度必须一一对应
③ 选择图表类型绘图 plt.plot(x, y) / plt.bar() / plt.pie()
④ 美化图表 标题、轴标签、刻度、网格、图例
⑤ 显示或保存 plt.show() / plt.savefig()
这里有两个常见疑问。
- 第一,步骤①和②能颠倒吗?
能,但更推荐先创建画布,就像画画先铺画纸再想画什么,逻辑更顺;而且后面学到子图时必须先plt.subplots()拿到 axes 才能绘图,养成先建画布的习惯有好处。 - 第二,不写
plt.figure()行不行?
行,plot 会自动帮你创建一个默认大小的画布。但默认尺寸往往不是最佳效果,实际项目中都会手动设置figsize,所以一般保持习惯书写。
下面用折线图作为第一个例子,把五步法完整走一遍:
python
# ① 创建画布
plt.figure(figsize=(10, 5))
# ② 准备数据(X 和 Y 维度必须一一对应)
x = range(10)
y = [1.5, 3.2, 2.8, 5.1, 4.3, 6.7, 5.9, 8.2, 7.1, 9.0]
# ③ 绘图:折线图
# 常用参数:marker, color, linewidth, linestyle, label, alpha
plt.plot(x, y, marker='o', linewidth=2, color='steelblue', label='数据线')
# ④ 美化
plt.title('折线图基础示例', fontsize=14)
plt.xlabel('X 轴')
plt.ylabel('Y 轴')
# xticks:只设位置,标签自动显示位置数值
plt.xticks(x[::2])
# yticks:位置 + 自定义标签 ------ ticks是数值位置,labels是显示文字
plt.yticks([2, 4, 6, 8, 10], ['A', 'B', 'C', 'D', 'E'])
plt.grid(True, linestyle='--', alpha=0.5)
plt.legend()
# ⑤ 显示
plt.show()
重点看 plt.yticks([2, 4, 6, 8, 10], ['A', 'B', 'C', 'D', 'E']) 这一行------刻度线画在 2、4、6、8、10 这些数值位置,但显示出来的文字是 A、B、C、D、E。这就是前面强调的:位置和标签可以完全不同。
Ticks 与 Tick Labels 再辨析
为了彻底搞懂这个最容易混淆的点,再看一个专门的对比示例:
python
plt.figure(figsize=(12, 5))
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [1.2, 3.5, 2.8, 6.1, 4.9, 7.3, 5.6, 9.0, 8.2, 10.5]
plt.plot(x, y, marker='s', linewidth=2, color='teal')
plt.title('Ticks 与 Tick Labels 辨析', fontsize=14)
# xticks:只传位置,标签自动显示数值
plt.xticks([0, 2, 4, 6, 8])
# yticks(位置, 标签):刻度画在数字位置,但显示成字母
plt.yticks([2, 4, 6, 8, 10], ['A', 'B', 'C', 'D', 'E'])
plt.xlabel('X 轴(间隔取刻度)')
plt.ylabel('Y 轴(刻度位置是数字,标签是字母)')
plt.grid(True, linestyle=':', alpha=0.5)
plt.show()
另外有两个常见错误写法需要特别指出:
plt.ytick_label(...)------这个方法从来就不存在 !Matplotlib 里没有这个函数名,不要和plt.yticks()搞混。plt.set_yticklabels(...)------也会报AttributeError。因为set_yticklabels()是 Axes 对象的方法 ,不是 pyplot 模块的函数。在 pyplot 风格下单图直接用plt.yticks(位置, 标签)一步到位即可。只有面向对象风格(子图)才需要分两步写:先ax.set_yticks()设位置,再ax.set_yticklabels()设标签。
4. 折线图
折线图是最基本的图表类型,用来展示数据随 X 轴变化的趋势。它的常用参数就几个:
| 参数 | 说明 | 示例 |
|---|---|---|
x, y |
横纵坐标数据,长度必须一致 | plt.plot([1,2,3], [4,5,6]) |
color |
线条颜色 | 'steelblue'、'#FF6600' |
linewidth |
线条粗细 | 2.5 |
linestyle |
线条样式 | '--' 虚线、':' 点线、'-.' 点划线 |
marker |
数据点标记形状 | 'o' 圆点、's' 方块、'^' 三角、'*' 星号 |
label |
图例标签文字(配合 plt.legend() 使用) |
'销售额' |
alpha |
透明度(0~1) | 0.7 |
python
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [10, 20, 15, 30]
plt.plot(x, y,
color='steelblue', # 线条颜色
linewidth=2.5, # 线条粗细
linestyle='--', # 虚线样式
marker='o', # 数据点用圆点标记
label='销售额', # 图例标签
alpha=0.7) # 透明度
plt.legend()
plt.show()
4.1 多条折线
一个画布上画多条线很简单:多次调用 plt.plot() ,每条线通过 label 起个名字,最后 plt.legend() 把图例亮出来。图例位置用 loc 控制,由"垂直 + 水平"两个单词组合:'upper left'(左上)、'lower right'(右下)、'best'(自动选择最佳位置)等:
python
plt.figure(figsize=(10, 5))
x = range(1, 13)
y1 = [10, 15, 13, 20, 18, 25, 22, 30, 28, 35, 32, 40]
y2 = [8, 12, 16, 14, 22, 20, 26, 24, 32, 30, 38, 36]
# 画两条线 ------ 两次 plot,label 给每条线一个名字
plt.plot(x, y1, marker='o', linewidth=2, label='产品A')
plt.plot(x, y2, marker='s', linewidth=2, label='产品B')
plt.title('两产品全年销售额趋势对比', fontsize=14)
plt.xlabel('月份')
plt.ylabel('销售额(万元)')
plt.xticks(x, [f'{m}月' for m in x])
# 图例:loc 控制位置(upper/lower + left/right/center)
plt.legend(loc='upper left')
# 网格线:linestyle 线型,alpha 透明度
plt.grid(True, linestyle='--', alpha=0.4)
plt.show()
4.2 网格线样式
网格线同样可定制外观,常用的属性是 linestyle(线型)和 alpha(透明度)。下面把三种常见线型放在一起对比:
python
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
x = range(6)
y = [2, 4, 1, 5, 3, 6]
axes[0].plot(x, y, marker='o', color='steelblue')
axes[0].set_title('虚线 linestyle="--"')
axes[0].grid(True, linestyle='--', alpha=0.6)
axes[1].plot(x, y, marker='s', color='coral')
axes[1].set_title('点线 linestyle=":"')
axes[1].grid(True, linestyle=':', alpha=0.6)
axes[2].plot(x, y, marker='^', color='seagreen')
axes[2].set_title('点划线 linestyle="-."')
axes[2].grid(True, linestyle='-.', alpha=0.6)
plt.tight_layout()
plt.show()
另外要注意:柱状图通常只设 Y 轴方向的网格(
axis='y'),否则 X 轴网格会和柱子重叠显得杂乱。这个在后面柱状图示例中会看到。
5. 柱状图
柱状图用来比较不同类别的数值大小。它和折线图的本质区别在于:折线图看趋势(X 轴通常是连续的时间序列),柱状图比大小(X 轴通常是离散的类别标签)。
创建流程和折线图完全一致:画布→数据→绘图→美化→展示。图表结构上,柱状图同样需要标题、轴标签、刻度、网格这些通用元素。
常用的几个参数:
| 参数 | 说明 | 示例 |
|---|---|---|
x |
柱子的 x 轴位置(通常为类别名称列表) | ['A','B','C'] |
height |
柱子的高度(数值),注意不是 y |
[10, 25, 15] |
width |
柱子的宽度,默认 0.8 | 0.6 |
color |
柱子填充颜色 | 'steelblue'、'#FF6600' |
edgecolor |
柱子边框颜色 | 'black' |
alpha |
透明度(0~1) | 0.7 |
label |
图例标签(配合 plt.legend()) |
'销量' |
注意这里参数名叫
height而不是y,plot 的y是一串连续的纵坐标值,而 bar 的height是每个柱子顶部的高度,柱子底部默认在 y=0。网格通常只设 Y 轴方向(
axis='y'),避免 X 轴网格干扰柱子视觉。
属性了解:
python
plt.bar(x=categories,
height=sales,
width=0.6, # 柱子宽度
color='steelblue', # 填充色
edgecolor='black', # 边框色
alpha=0.8, # 透明度
label='销售额')
完整创建柱状图画布→数据→绘图→美化→展示:
python
plt.figure(figsize=(10, 5))
products = ['产品A', '产品B', '产品C', '产品D', '产品E', '产品F']
sales = [120, 95, 150, 80, 200, 135]
x_pos = range(len(products))
# bar(x=柱子位置, height=柱子高度/数值, width=柱宽, color, edgecolor, alpha)
plt.bar(x_pos, sales, width=0.6, color='steelblue', edgecolor='black', alpha=0.85)
# 通用美化(和折线图一样)
plt.title('各产品销售额对比', fontsize=14)
plt.xlabel('产品名称')
plt.ylabel('销售额(万元)')
plt.xticks(x_pos, products)
plt.yticks(range(0, 250, 50))
# 柱状图网格通常只开 Y 轴,避免和柱子重叠
plt.grid(True, axis='y', linestyle='--', alpha=0.5)
plt.show()
可以看到,除了 plt.plot() 换成 plt.bar() 以及网格方向改成了 axis='y',其他部分的写法和折线图一模一样,标题、轴标签、刻度的设置完全通用。
5.1 分组柱状图
当需要对比多组数据时(如产品 A 和产品 B 的季度销售额),思路是让每组柱子向左/右偏移半个宽度来实现并排:
python
plt.figure(figsize=(10, 5))
categories = ['Q1', 'Q2', 'Q3', 'Q4']
sales_A = [100, 120, 140, 160]
sales_B = [90, 110, 130, 150]
x = np.arange(len(categories))
width = 0.35
# 并排两组柱子:A 向左偏半个宽度,B 向右偏半个宽度
plt.bar(x - width/2, sales_A, width, label='产品A', color='steelblue', edgecolor='black')
plt.bar(x + width/2, sales_B, width, label='产品B', color='coral', edgecolor='black')
plt.title('两产品季度销售额对比', fontsize=14)
plt.xlabel('季度')
plt.ylabel('销售额(万元)')
plt.xticks(x, categories)
plt.legend(loc='upper left')
plt.grid(True, axis='y', linestyle='--', alpha=0.5)
plt.show()
6. 饼状图
饼状图用来展示各部分占总体的比例 。它和折线图、柱状图有一个根本区别:饼状图展示的是比例关系,不需要坐标轴。
这就引出了一个重要的问题,前面花了很大篇幅介绍的那些通用图表元素(标题、轴标签、刻度、网格、图例),到了饼状图这里还能用吗?
| 图表元素 | 饼状图是否适用 | 说明 |
|---|---|---|
标题 title |
✅ 适用 | 和其他图表一样 |
轴标签 xlabel / ylabel |
❌ 不适用 | 饼图没有坐标轴概念 |
刻度 xticks / yticks |
❌ 不适用 | 没有轴就没有刻度 |
网格线 grid |
❌ 不适用 | 没有坐标轴,设了也没意义 |
图例 legend |
⚠️ 一般不用 | 饼图通常在扇形旁直接标注名称和百分比,加图例反而让读者来回对照 |
这就是为什么理解每种图表的"本质"很重要,折线图和柱状图本质上是"坐标轴上的数据",所以轴标签、刻度、网格这些概念通用;而饼状图本质上是"一个圆按比例切分",它的参数完全围绕"怎么切这个圆"来设计。
常用的几个参数:
| 参数 | 说明 | 示例 |
|---|---|---|
x |
各部分数值(非负,自动换算为百分比) | [30, 20, 50] |
labels |
各部分名称,标注在扇形旁 | ['A类', 'B类', 'C类'] |
autopct |
百分比显示格式字符串 | '%1.1f%%'(一位小数)、'%d%%'(整数) |
explode |
突出某一部分的偏移距离(与 x 同长度) |
[0, 0.1, 0](第二块突出) |
startangle |
起始绘制角度(默认0=从正东逆时针) | 90(从12点钟方向开始) |
colors |
自定义颜色列表 | ['#ff9999','#66b3ff','#99ff99'] |
wedgeprops |
扇形边框样式字典 | {'edgecolor':'white', 'linewidth':2} |
pctdistance |
百分比文字离圆心的距离(<1靠内,>1靠外) | 0.7 |
labeldistance |
类别标签离圆心的距离 | 1.1 |
shadow |
是否添加阴影 | True / False |
饼图的数值会自动归一化成百分比,所以不必提前计算比例。
了解属性:
python
plt.pie(x=sizes,
labels=labels,
autopct='%1.1f%%', # 保留一位小数的百分比
explode=explode,
startangle=90, # 从12点钟方向开始
colors=['#ff9999','#66b3ff','#99ff99','#ffcc99'],
wedgeprops={'edgecolor': 'white', 'linewidth': 2},
shadow=True,
pctdistance=0.75,
labeldistance=1.1)
创建饼图:
python
plt.figure(figsize=(8, 6))
labels = ['Python', 'Java', 'JavaScript', 'C++', 'Go', '其他']
sizes = [35, 25, 20, 8, 7, 5]
colors = ['#ff6b6b', '#4ecdc4', '#45b7d1', '#f9ca24', '#6c5ce7', '#a0a0a0']
explode = (0.08, 0, 0, 0, 0, 0) # 只突出第一块(Python)
# pie(数值, labels=名称, autopct=百分比格式, explode=突出, startangle=起始角度, colors, wedgeprops=边框)
plt.pie(sizes,
labels=labels,
autopct='%1.1f%%',
explode=explode,
startangle=90,
colors=colors,
wedgeprops={'edgecolor': 'white', 'linewidth': 2})
# 饼状图只需要标题,不需要轴标签和刻度
plt.title('编程语言使用占比', fontsize=14)
plt.show()
注意对比:柱状图代码里 plt.bar() 之后跟着 xlabel、ylabel、xticks、yticks、grid,而饼状图这里 plt.pie() 之后只有一行 plt.title()。不是因为饼状图"简单",而是因为它的图形本质决定了不需要那些坐标轴相关的设置。
7. 子图布局
当需要在一个画布上展示多张图表时,就需要用到子图。核心函数:
python
figure, axes = plt.subplots(nrows=行数, ncols=列数, figsize=(宽, 高))
它返回一个元组 (Figure, Axes) ,我们用解包的方式分别拿到画布和坐标轴。axes 的类型取决于行列数:
- 1 行 N 列 或 N 行 1 列 时,
axes是一维数组,用axes[0](最左/最上)、axes[1]...axes[N-1](最右/最下)访问 - 多行多列 (如 2×2)时,
axes是二维数组,用axes[行][列]访问------先行后列,和数学里矩阵的索引一模一样。比如 2×2 时:axes[0][0]左上、axes[0][1]右上、axes[1][0]左下、axes[1][1]右下


操作子图时方法名多了个 set_ 前缀,对照关系:
| pyplot 风格(单图) | 面向对象风格(子图) |
|---|---|
plt.title('xxx') |
ax.set_title('xxx') |
plt.xlabel('xxx') |
ax.set_xlabel('xxx') |
plt.ylabel('xxx') |
ax.set_ylabel('xxx') |
plt.xticks(位置, 标签) |
ax.set_xticks(位置) + ax.set_xticklabels(标签) |
plt.yticks(位置, 标签) |
ax.set_yticks(位置) + ax.set_yticklabels(标签) |
plt.grid(True) |
ax.grid(True) |
plt.legend() |
ax.legend() |
注意一个关键区别:pyplot 风格下
plt.xticks()一步同时设好位置和标签,但面向对象风格下需要分两步,先ax.set_xticks()设位置,再ax.set_xticklabels()设标签。因为面向对象风格把每个操作拆得更细,给了更精细的控制力。
7.1 1×2 子图:柱状图 vs 饼状图并排对比
这个例子把柱状图和饼状图放一起,直观感受创建时的不同
python
figure, axes = plt.subplots(nrows=1, ncols=2, figsize=(14, 5))
# 1×2 时:axes[0]=左图, axes[1]=右图
# ===== 左图:柱状图 ------ 有坐标轴,需要标题、刻度、网格 =====
axes[0].bar([1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6],
color='steelblue', edgecolor='black')
axes[0].set_title('柱状图', fontsize=13)
axes[0].set_xticks([1, 2, 3, 4, 5, 6])
axes[0].set_xticklabels(['A', 'B', 'C', 'D', 'E', 'F'])
axes[0].set_yticks([1, 2, 3, 4, 5, 6])
axes[0].set_yticklabels(['a', 'b', 'c', 'd', 'e', 'f'])
axes[0].grid(linestyle='--', alpha=0.5)
# ===== 右图:饼状图 ------ 无坐标轴,仅标题,labels 直接传入 pie =====
axes[1].pie([1, 2, 3, 4, 5, 6],
labels=['A', 'B', 'C', 'D', 'E', 'F'],
autopct='%1.1f%%',
startangle=90,
wedgeprops={'edgecolor': 'white', 'linewidth': 1.5})
axes[1].set_title('饼状图', fontsize=13)
plt.tight_layout()
plt.show()
左图柱状图:set_xticks、set_xticklabels、set_yticks、set_yticklabels、grid,一套坐标轴全家桶。右图饼状图:只有 set_title 和 pie 自带的 labels,因为饼图没有坐标轴。并排一看,差异一目了然。
7.2 2×2 四宫格:四种图表同框
再来看四种图表类型同时展示的效果:
python
figure, axes = plt.subplots(nrows=2, ncols=2, figsize=(12, 10))
# 2×2 时:axes[0][0]=左上, axes[0][1]=右上, axes[1][0]=左下, axes[1][1]=右下
x = range(1, 7)
# 左上 [0][0]:折线图
axes[0][0].plot(x, [1, 3, 2, 5, 4, 6], marker='o', color='steelblue', linewidth=2)
axes[0][0].set_title('折线图 --- 看趋势')
axes[0][0].set_xlabel('X'); axes[0][0].set_ylabel('Y')
axes[0][0].grid(True, linestyle='--', alpha=0.5)
# 右上 [0][1]:柱状图
axes[0][1].bar(x, [6, 4, 5, 2, 3, 1], color='coral', edgecolor='black')
axes[0][1].set_title('柱状图 --- 比大小')
axes[0][1].set_xlabel('类别'); axes[0][1].set_ylabel('数值')
axes[0][1].grid(True, axis='y', linestyle='--', alpha=0.5)
# 左下 [1][0]:散点图
axes[1][0].scatter([1, 2, 3, 4, 5, 6], [2, 5, 3, 8, 7, 10],
s=100, color='seagreen', alpha=0.7, edgecolors='black')
axes[1][0].set_title('散点图 --- 看分布')
axes[1][0].set_xlabel('X'); axes[1][0].set_ylabel('Y')
axes[1][0].grid(True, linestyle='--', alpha=0.5)
# 右下 [1][1]:饼状图
axes[1][1].pie([25, 20, 30, 15, 10],
labels=['A', 'B', 'C', 'D', 'E'],
autopct='%1.1f%%',
startangle=90,
wedgeprops={'edgecolor': 'white', 'linewidth': 2})
axes[1][1].set_title('饼状图 --- 看占比')
plt.tight_layout()
plt.show()
四个子图,四种类型。三个坐标轴类图表(折线、柱状、散点)都有 grid、xlabel、ylabel,而右下角的饼状图依然只有 set_title 一行。这就是贯穿全文的核心观点,先理解每种图的本质是什么,自然就知道该设什么、不必设什么。
保存图片(dpi 控制清晰度,bbox_inches='tight' 裁掉多余白边)
plt.savefig('my_plot.png', dpi=300, bbox_inches='tight')
希望这篇笔记能帮你理清数据可视化基础。配套的 Matplotlib.ipynb 包含了文中所有代码的可运行版本,可以边读边动手实践。
以上为个人学习总结,旨在梳理个人理解。如有疏漏或不当之处,欢迎指正与交流。如果文章对你有帮助,别忘了点个赞、留个言,让更多的小伙伴看到~ 我们下篇再见!
📁 代码讲义:Matplotlib.ipynb
📅 更新日期:2026-06-07