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

人工智能之数据分析 Matplotlib

第六章 知识总结


文章目录


前言

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


一、核心架构

Matplotlib 采用 三层架构:

  1. Backend(后端)

    • 负责图形渲染和输出(如 TkAgg、Qt5Agg、Agg(无界面)等)

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

      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,复杂/可复用图表用 面向对象 API (fig, 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 图:

    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》

相关推荐
2601_95566246几秒前
情感解说视频如何提升感染力?配音细节很关键
人工智能·音视频·语音识别·视频
苏醒的人生4 分钟前
电商品牌物料AI生图工具推荐:让品牌调性一套到底
人工智能
lank_M9 分钟前
截图OCR预处理在普通屏上翻车,Retina截图却没事
图像处理·人工智能·计算机视觉·ocr
Aloudata9 分钟前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
paopaokaka_luck15 分钟前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
龙亘川19 分钟前
AI 协同赋能城市治理:支撑政协数字化履职的技术路径探析
大数据·人工智能·智慧城市·开源软件·数据可视化
通信大模型20 分钟前
IEEE TCCN | 面向低空经济网络的Agentic AI驱动多无人机轨迹优化
网络·人工智能·无人机
爱编程的小白L32 分钟前
2027 计算机毕业设计选题汇总|深度学习专项(2027最新)
人工智能·深度学习·课程设计
逸模36 分钟前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模