Python 第三方库:matplotlib(科学绘图与数据可视化)

matplotlib 是 Python 最常用的科学绘图库之一,提供了强大、灵活的 2D 与 3D 数据可视化功能。它最初由 John D. Hunter 于 2003 年开发,现已成为数据分析、科研绘图与报告展示的标准工具。该库可用于绘制从简单折线图到复杂统计图、3D 曲面、热力图等多种图形,并可输出高质量图片(PNG、SVG、PDF)用于论文或展示。

安装 matplotlib 库:

nginx 复制代码
pip install matplotlib

常见应用场景:

(1)数据分析可视化:展示趋势、分布与异常点。

(2)科研绘图:生成出版级矢量图,支持 LaTeX 数学公式。

(3)统计分析与实验结果展示:绘制直方图、误差线、箱线图等。

(4)交互式分析:在 Jupyter Notebook 或 GUI 环境中实时调整图形。

(5)图像输出与自动化报告生成:结合脚本生成批量图表。

◆ ◆

核心概念

1、图形结构层次

🔹 Figure:整个画布对象。

🔹 Axes:具体绘图区域,一个 Figure 中可包含多个 Axes。

🔹 Artist:所有绘图元素的基础类,包括线条、文字、图例等。

2、两种绘图方式

🔹 Pyplot 接口(推荐初学者使用)

apache 复制代码
import matplotlib.pyplot as pltplt.plot([1, 2, 3], [2, 4, 6])plt.show()

适合快速绘图。

🔹 面向对象 API(推荐专业绘图)

apache 复制代码
fig, ax = plt.subplots()ax.plot([1, 2, 3], [2, 4, 6])fig.show()

适合多子图或复杂布局。

3、样式系统(Style)

使用 plt.style.use('ggplot') 或 plt.style.use('seaborn') 快速切换全局风格。

4、后端(Backend)

控制绘图的显示与输出方式,如 TkAgg、QtAgg、PDF、SVG。

◆ ◆

应用举例

例 1:折线图(Line Plot)

javascript 复制代码
import matplotlib.pyplot as pltimport numpy as np
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = np.linspace(0, 10, 100)y = np.sin(x)plt.plot(x, y, label='sin(x)', color='blue')plt.title('正弦曲线示例')plt.xlabel('x')plt.ylabel('sin(x)')plt.legend()plt.show()

例 2:散点图(Scatter Plot)

javascript 复制代码
import matplotlib.pyplot as pltimport numpy as np
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = np.random.rand(50)y = np.random.rand(50)plt.scatter(x, y, color='green', alpha=0.6)plt.title('随机散点分布')plt.show()

例 3:柱状图(Bar Chart)

javascript 复制代码
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
categories = ['A', 'B', 'C', 'D']values = [12, 25, 30, 20]plt.bar(categories, values, color='orange')plt.title('类别统计结果')plt.show()

例 4:直方图(Histogram)

kotlin 复制代码
import matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
data = np.random.randn(200)plt.hist(data, bins=20, color='skyblue', edgecolor='black')plt.title('数据分布直方图')plt.show()

例 5:多子图(Subplots)

apache 复制代码
import matplotlib.pyplot as pltimport numpy as np
x = np.linspace(0, 2*np.pi, 100)y1, y2 = np.sin(x), np.cos(x)
fig, axs = plt.subplots(2, 1)axs[0].plot(x, y1, color='red', label='sin(x)')axs[1].plot(x, y2, color='blue', label='cos(x)')axs[0].legend()axs[1].legend()plt.show()

◆ ◆

常用函数与方法速览

pyplot.plot(x, y, label=None, color=None, linestyle='-')

绘制折线图。

参数:

x, y:数据序列。

label:曲线标签(用于图例)。

color:线条颜色。

linestyle:线型(如 '-', '--', ':')。

返回:线对象列表。

pyplot.scatter(x, y, s=None, c=None, alpha=None)

绘制散点图。

参数:

x, y:数据点坐标。

s:点大小(可为单值或数组)。

c:颜色或颜色映射。

alpha:透明度(0--1)。

返回:PathCollection 对象。

pyplot.bar(x, height, color=None)

绘制垂直柱状图。

参数:

x:分类标签或索引。

height:每个柱的高度。

color:柱体颜色。

返回:BarContainer 对象。

pyplot.hist(data, bins=10, color=None, edgecolor=None)

绘制直方图。

参数:

data:待统计的数据序列。

bins:分组数量(默认 10)。

color:填充颜色。

edgecolor:边框颜色。

返回:包含计数、分组边界与补丁对象的元组。

pyplot.subplots(nrows=1, ncols=1, figsize=None)

创建多子图布局。

参数:

nrows, ncols:子图行数与列数。

figsize:图形大小(宽, 高)。

返回:(Figure, Axes) 元组。

pyplot.savefig(filename, dpi=300, bbox_inches='tight')

将当前图保存为文件。

参数:

filename:输出文件路径(如 "figure.png")。

dpi:分辨率(每英寸像素点)。

bbox_inches:边界调整选项。

返回:无。

pyplot.style.use(style_name)

设置全局绘图样式。

参数:

style_name:样式名称(如 'classic'、'seaborn'、'ggplot')。

返回:无。

◆ ◆

补充说明

1、matplotlib 支持中文显示,但需设置字体。

python 复制代码
from matplotlib import font_manager
# 方法一:全局设置字体plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 使用黑体显示中文plt.rcParams['axes.unicode_minus'] = False     # 正确显示负号
# 方法二:指定字体路径font_path = r"C:\Windows\Fonts\msyh.ttc"   # Windows 示例,可换为 Linux/macOS 路径font_prop = font_manager.FontProperties(fname=font_path)
# 方法三:修改 Matplotlib 配置文件(matplotlibrc)

2、建议搭配 numpy 和 pandas 使用,更适合数据处理与可视化任务。

3、若需交互式图形可考虑 mpl_interactions、plotly 等扩展。

4、高级用户可转向 matplotlib 的面向对象接口,以实现复杂图表布局。

5、matplotlib 中还有 3D 绘图、动画制作(FuncAnimation)、样式模板(style.use())等高级用法。

📘 小结

matplotlib 是 Python 数据可视化的基础工具,功能全面、生态成熟。它既能快速生成探索性图形,也能制作出版级高质量可视化作品。

通过 pyplot 快速绘图接口与面向对象的绘图体系,matplotlib 可灵活地适配科研、工程、数据分析等多种应用场景,是每位 Python 开发者与数据分析师必备的绘图库。

"点赞有美意,赞赏是鼓励"

相关推荐
草莓熊Lotso3 小时前
C++ 方向 Web 自动化测试入门指南:从概念到 Selenium 实战
前端·c++·python·selenium
JS.Huang3 小时前
【JavaScript】原生函数
开发语言·javascript·ecmascript
gddkxc3 小时前
AI CRM中的数据分析:悟空AI CRM如何帮助企业优化运营
人工智能·信息可视化·数据分析
我是李武涯3 小时前
PyTorch Dataloader工作原理 之 default collate_fn操作
pytorch·python·深度学习
CoderCodingNo4 小时前
【GESP】C++五级考试大纲知识点梳理, (5) 算法复杂度估算(多项式、对数)
开发语言·c++·算法
Kratzdisteln4 小时前
【Python】绘制椭圆眼睛跟随鼠标交互算法配图详解
python·数学·numpy·pillow·matplotlib·仿射变换
maxruan4 小时前
PyTorch学习
人工智能·pytorch·python·学习
ftpeak4 小时前
JavaScript性能优化实战
开发语言·javascript·性能优化
唐古乌梁海5 小时前
【python】在Django中,执行原生SQL查询
python·sql·django