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

人工智能之数据分析 Matplotlib

第六章 知识总结


文章目录


前言

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


一、核心架构

Matplotlib 采用 三层架构

  1. Backend(后端)

    • 负责图形渲染和输出(如 TkAggQt5AggAgg(无界面)等)

    • 通常无需手动设置,除非在服务器环境:

      python 复制代码
      import matplotlib
      matplotlib.use('Agg')  # 必须在 import pyplot 前设置
  2. Artist Layer(艺术家层)

    • 所有可视元素(Figure、Axes、Line、Text 等)都是 Artist 对象
    • 面向对象 API 操作此层
  3. 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 已弃用,建议用 Pillowimageio

功能 推荐方式
读图 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 图:

    python 复制代码
    sns.set_style("whitegrid")
    sns.set_palette("Set2")
  • 混合使用:

    python 复制代码
    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,后续会逐步更新。

资料关注

公众号:咚咚王

gitee:https://gitee.com/wy18585051844/ai_learning

《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》

相关推荐
张较瘦_1 小时前
[论文阅读] AI + 软件工程 | 首测GPT-4.1/Claude Sonnet 4适配能力:LLM多智能体在SE领域的潜力与局限
论文阅读·人工智能·软件工程
大模型真好玩1 小时前
LangChain1.0实战之多模态RAG系统(三)——多模态RAG系统PDF解析功能实现
人工智能·langchain·agent
weixin_429630261 小时前
第8章 集成学习
人工智能·机器学习·集成学习
Wild_Pointer.1 小时前
深入浅出OpenCV:编译并使用OpenCV
人工智能·opencv·计算机视觉
却道天凉_好个秋1 小时前
OpenCV(三十五):黑帽操作与顶帽操作
人工智能·opencv·计算机视觉
money05341 小时前
pytorch自定义backend
人工智能·pytorch·python
人工智能训练1 小时前
跨架构突围!X86 Ubuntu Dify 无缝迁移 Arm64 openEuler Docker 实战指南
人工智能·ubuntu·docker·容器·架构·arm64·dify
还不秃顶的计科生1 小时前
AI生成ppt工具包大全
人工智能
deephub1 小时前
BipedalWalker实战:SAC算法如何让机器人学会稳定行走
人工智能·机器学习·机器人·强化学习