Python数据可视化入门:用Matplotlib绘制第一张图表

慢慢来
慢慢来
发布时间:2026-10-22| 5人浏览过
原创
Matplotlib 是 Python 体系中最经典且底层的可视化核心库,几乎所有高级绘图工具(如 Seaborn、Pandas 内置绘图)都构建于其上。本文将直接从最实际的操作流程切入,带你完成从库安装、数据构造、第一张折线图绘制到标题标注、网格图例添加与中文字体配置的完整过程,帮助初学者建立扎实、规范的绘图认知。

一、核心操作流程与基础准备

在 Python 中使用 Matplotlib 绘图并不复杂,整个工作流程可以拆解为五个清晰的阶段:安装与引入模块、准备二维数据、构建画布与坐标系、绘制图形与添加修饰、最终渲染或导出文件。

Python数据可视化入门:用Matplotlib绘制第一张图表
图 1:Matplotlib 数据可视化五步操作主线

在开始写代码前,首先需要在你的 Python 环境中安装 Matplotlib。打开终端或命令提示符,执行以下安装命令:

pip install matplotlib

安装完成后,在 Python 脚本或 Jupyter Notebook 中,通常约定俗成将核心子模块 matplotlib.pyplot 简写导入为 plt:

import matplotlib.pyplot as plt

二、理解 Matplotlib 核心架构:Figure 与 Axes

初学者使用 Matplotlib 遇到的第一个认知障碍,通常是混淆了“画布”与“子图”。Matplotlib 提供了两种绘图接口风格:

  • pyplot 状态机风格:直接调用 plt.plot()、plt.title()。虽然快捷,但在处理多图或复杂控制时代码容易混乱。
  • 面向对象风格(推荐):显式通过 fig, ax = plt.subplots() 创建对象。其中 fig(Figure)代表整个图像窗口或物理页面,而 ax(Axes)才是真正包含坐标轴、刻度、数据线和图例的绘图区域。
Python数据可视化入门:用Matplotlib绘制第一张图表
图 2:Matplotlib 核心层级结构剖析图(Figure 画布与 Axes 坐标系)

三、完整实战:绘制第一张气温走势折线图

下面我们以一个生活常见的例子——“记录一周气温走势”为具体场景,写出标准的 Python 绘图代码。每个步骤都配有详尽说明,读者可以直接复制运行。

import matplotlib.pyplot as plt

# 1. 设置中文字体与负号正常显示(关键避坑)
plt.rcParams['font.sans-serif'] = ['PingFang SC', 'Microsoft YaHei', 'SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 2. 准备数据
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
temperatures = [15, 17, 14, 18, 21, 19, 22]

# 3. 创建画布(Figure)和坐标系(Axes)
fig, ax = plt.subplots(figsize=(8, 4.5), dpi=100)

# 4. 在坐标系上绘制折线图,设置线宽、颜色与数据点标记
ax.plot(days, temperatures, marker='o', color='#17324D', linewidth=2, label='日最高气温')

# 5. 添加标题、坐标轴说明
ax.set_title('城市一周最高气温走势', fontsize=14, pad=12)
ax.set_xlabel('星期', fontsize=11)
ax.set_ylabel('气温 (°C)', fontsize=11)

# 6. 开启网格辅助线并显示图例
ax.grid(True, linestyle='--', alpha=0.5)
ax.legend(loc='upper left')

# 7. 先保存图片,再调用 show 渲染
fig.savefig('temperature_trend.png', dpi=300, bbox_inches='tight')
plt.show()

为了让大家直观理解每一行代码与最终图表构件的对应关系,我们来看下面的映射关系:

Python数据可视化入门:用Matplotlib绘制第一张图表
图 3:Matplotlib 代码方法与视觉呈现映射关系

四、初学者最常遇到的两大约束与避坑方案

避坑 1:中文字符显示为方块(豆腐块乱码)

原因分析:Matplotlib 默认内置字体为 DejaVu Sans,该字体库并不包含中文字形,因此中文会回退显示为一个个空心小方框。

解决办法:在脚本最开头通过 plt.rcParams 指定系统包含的中文字体列表。例如 macOS 上的 'PingFang SC'、Windows 上的 'Microsoft YaHei' 或 'SimHei'。同时设置 axes.unicode_minus = False,防止负号“-”被误识别为乱码方块。

避坑 2:使用 savefig 保存出来的图片是全白色的空白图

原因分析:很多新手习惯将 plt.show() 写在 plt.savefig() 之前。在 Matplotlib 的工作机制中,plt.show() 执行完屏幕渲染后,会自动释放并清空当前画布内存。因此紧接着调用的 savefig 导出的其实是一张刚被重置的空白画布。

解决办法:永远将 fig.savefig(...) 置于 plt.show() 之前;或者在面向对象模式下,直接调用已经实例化的 fig.savefig(...)。

五、核心要点总结与速查清单

通过本文的学习,你已经掌握了使用 Matplotlib 绘制第一张折线图的标准姿势。在日常数据探索与科学计算中,牢记以下三项决策与检查标准:

Python数据可视化入门:用Matplotlib绘制第一张图表
图 4:Matplotlib 入门关键要素总结与自查清单

掌握了折线图的绘制逻辑后,后续学习柱状图(ax.bar)、散点图(ax.scatter)或直方图(ax.hist)时,除了图形绘制方法不同,整体的画布构建、坐标系配置与保存逻辑均完全相通。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。