首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >人工智能之数据分析 Matplotlib:第六章 知识总结

人工智能之数据分析 Matplotlib:第六章 知识总结

原创
作者头像
咚咚王
发布2025-11-30 21:48:09
发布2025-11-30 21:48:09
2060
举报

人工智能之数据分析 Matplotlib

第六章 知识总结


前言

本文对之前的关于matplotlib的知识进行系统性总结,便于知识梳理和归纳,为后续打好基础,或者面试使用


一、核心架构

Matplotlib 采用 三层架构

  1. Backend(后端)
  • 负责图形渲染和输出(如 TkAggQt5AggAgg(无界面)等)
  • 通常无需手动设置,除非在服务器环境:import matplotlib matplotlib.use('Agg') # 必须在 import pyplot 前设置
  • Artist Layer(艺术家层)
  • 所有可视元素(Figure、Axes、Line、Text 等)都是 Artist 对象
  • 面向对象 API 操作此层
  • Scripting Layer(脚本层)— pyplot
  • 提供类似 MATLAB 的简单接口(如 plt.plot()
  • 自动管理当前 Figure 和 Axes

建议:简单绘图用 pyplot,复杂/可复用图表用 面向对象 APIfig, ax = plt.subplots()


二、两种绘图风格

1. Pyplot 风格(命令式)

代码语言:python
复制
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [1, 4, 2])
plt.title("Title")
plt.show()
  • 适合交互式探索(如 Jupyter Notebook)
  • 隐式操作“当前”图形

2. 面向对象风格(推荐用于脚本/项目)

代码语言:python
复制
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 4, 2])
ax.set_title("Title")
plt.show()
  • 显式控制每个组件
  • 支持多子图、精细定制、避免状态混乱

三、常用图表类型与函数

图表类型

函数

典型用途

折线图

ax.plot(x, y)

趋势、时间序列

散点图

ax.scatter(x, y, c=..., s=...)

变量关系、聚类

柱状图

ax.bar(categories, values)

类别比较

水平柱状图

ax.barh(...)

类别名较长时

饼图

ax.pie(sizes, labels=..., autopct=...)

构成比例(≤5类)

直方图

ax.hist(data, bins=...)

数据分布

箱线图

ax.boxplot(data)

分布离散度、异常值

热力图

ax.imshow(matrix, cmap=...)sns.heatmap()

矩阵、相关性

填充面积图

ax.fill_between(x, y1, y2)

区间范围


四、关键定制功能

1. 标题与标签

代码语言:python
复制
ax.set_title("Main Title", fontsize=14)
ax.set_xlabel("X Label")
ax.set_ylabel("Y Label")

2. 刻度与网格

代码语言:python
复制
ax.set_xticks([0, 1, 2])
ax.set_xticklabels(['A', 'B', 'C'])
ax.grid(True, linestyle='--', alpha=0.5)

3. 图例

代码语言:python
复制
ax.plot(x, y1, label='Series 1')
ax.plot(x, y2, label='Series 2')
ax.legend(loc='upper left')

4. 颜色与样式

  • 颜色:color='red''#FF5733'[0.1, 0.8, 0.3]
  • 线型:linestyle='--'ls=':'
  • 标记:marker='o', markersize=8

5. 多子图

代码语言:python
复制
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
axs[0, 0].plot(...)
plt.tight_layout()  # 自动防重叠

五、图像处理(谨慎使用)

⚠️ plt.imread / imsave 已弃用,建议用 Pillow 或 imageio

功能

推荐方式

读图

np.array(Image.open('img.jpg'))

显示

ax.imshow(img)

保存

Image.fromarray(arr).save('out.png')


六、中文显示解决方案

代码语言:python
复制
# 方法1:全局设置(Windows)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示

# 方法2:指定字体路径(跨平台)
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="/path/to/simhei.ttf")
ax.set_title("标题", fontproperties=my_font)

七、与 Seaborn 协同

  • Seaborn 是 Matplotlib 的高级封装,默认使用 Matplotlib 渲染
  • 设置 Seaborn 样式会影响后续所有 Matplotlib 图:sns.set_style("whitegrid") sns.set_palette("Set2")
  • 混合使用:fig, ax = plt.subplots() sns.boxplot(data=df, x='category', y='value', ax=ax) ax.set_title("Custom Title via Matplotlib")

八、最佳实践

Do’s

  • 使用 figsize 控制画布大小
  • dpi=300 + bbox_inches='tight' 保存高清图
  • 多子图用 plt.subplots() + tight_layout()
  • 复杂图表优先用面向对象 API
  • 探索数据时结合 Seaborn 快速出图

Don’ts

  • 不要写 plt.plot(...)... 是 Ellipsis,会报错!)
  • 避免在循环中不关闭图形(内存泄漏)→ 用 plt.close()
  • 饼图类别 > 5 时改用条形图
  • 不要在服务器环境使用交互式后端(如 Tkinter)

九、常用配置速查

代码语言:python
复制
# 全局设置示例
plt.rcParams.update({
    'figure.figsize': (10, 6),
    'font.size': 12,
    'lines.linewidth': 2,
    'axes.grid': True,
    'axes.spines.top': False,
    'axes.spines.right': False
})

十、调试技巧

  • 查看当前后端:matplotlib.get_backend()
  • 列出可用字体:matplotlib.font_manager.findSystemFonts()
  • 清空当前图:plt.clf();关闭窗口:plt.close()
  • Jupyter 内联显示:%matplotlib inline

📌 一句话总结“简单用 pyplot,复杂用 axes;中文设字体,多图用 subplots;高清靠 savefig,美观靠 Seaborn。”


后续

python过渡项目部分代码已经上传至gitee,后续会逐步更新。

资料关注

公众号:咚咚王

《Python编程:从入门到实践》

《利用Python进行数据分析》

《算法导论中文第三版》

《概率论与数理统计(第四版) (盛骤) 》

《程序员的数学》

《线性代数应该这样学第3版》

《微积分和数学分析引论》

《(西瓜书)周志华-机器学习》

《TensorFlow机器学习实战指南》

《Sklearn与TensorFlow机器学习实用指南》

《模式识别(第四版)》

《深度学习 deep learning》伊恩·古德费洛著 花书

《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》

《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》

《自然语言处理综论 第2版》

《Natural-Language-Processing-with-PyTorch》

《计算机视觉-算法与应用(中文版)》

《Learning OpenCV 4》

《AIGC:智能创作时代》杜雨+&+张孜铭

《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》

《从零构建大语言模型(中文版)》

《实战AI大模型》

《AI 3.0》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 人工智能之数据分析 Matplotlib
  • 前言
  • 一、核心架构
  • 二、两种绘图风格
    • 1. Pyplot 风格(命令式)
    • 2. 面向对象风格(推荐用于脚本/项目)
  • 三、常用图表类型与函数
  • 四、关键定制功能
    • 1. 标题与标签
    • 2. 刻度与网格
    • 3. 图例
    • 4. 颜色与样式
    • 5. 多子图
  • 五、图像处理(谨慎使用)
  • 六、中文显示解决方案
  • 七、与 Seaborn 协同
  • 八、最佳实践
  • 九、常用配置速查
  • 十、调试技巧
  • 后续
  • 资料关注
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档