人工智能之数据分析 Matplotlib:第五章 常见函数

人工智能之数据分析 Matplotlib

第五章 常见函数


@

目录
  • 人工智能之数据分析 Matplotlib
  • 前言
  • 一、Matplotlib 图像处理三剑客:imread / imshow / imsave
    • 1. plt.imread() —— 读取图像
    • 2. plt.imshow() —— 显示图像
      • 常用参数:
    • 3. plt.imsave() —— 保存图像数组为图片文件
  • 二、其他常见 Matplotlib 函数
  • 三、中文显示问题解决方案
    • ✅ 方法一:全局设置中文字体(推荐)
    • ✅ 方法二:指定字体路径(跨平台通用)
  • 四、Matplotlib 与 Seaborn 协同使用
    • 安装
    • 基本用法
    • 混合使用技巧
    • 常用 Seaborn 函数 vs Matplotlib
  • 总结
  • 后续
  • 资料关注


前言

在 Matplotlib 中,除了常用的 plotscatterbar 等绘图函数外,还有一些图像处理样式控制相关的常用函数,如 imshowimsaveimread,以及解决中文显示问题的方法。此外,Seaborn 作为基于 Matplotlib 的高级可视化库,也常与之配合使用。

本文将系统介绍这些内容:


一、Matplotlib 图像处理三剑客:imread / imshow / imsave

⚠️ 注意:从 Matplotlib 3.6 起matplotlib.pyplot.imreadimsave 已被弃用(deprecated),推荐改用 Pillow(PIL)imageio。但为兼容旧代码,仍可使用(部分版本会警告)。

1. plt.imread() —— 读取图像

import matplotlib.pyplot as pltimg = plt.imread('photo.jpg')  # 返回 numpy.ndarray (H, W, C)
print(img.shape)  # 如 (480, 640, 3) 表示 RGB 图像
  • 支持格式:PNG、JPEG、TIFF 等(依赖 Pillow)
  • 返回值:float32(0~1)或 uint8(0~255),取决于文件

✅ 推荐替代(现代方式):

from PIL import Image
import numpy as np
img = np.array(Image.open('photo.jpg'))

2. plt.imshow() —— 显示图像

plt.imshow(img)
plt.axis('off')  # 关闭坐标轴(图像通常不需要)
plt.title("My Photo")
plt.show()

常用参数:

参数 说明
cmap 颜色映射,用于灰度图,如 'gray', 'viridis'
vmin, vmax 控制颜色范围(归一化)
interpolation 插值方式,如 'nearest', 'bilinear'

✅ 显示灰度图示例:

gray_img = plt.imread('lena.png')  # 假设是单通道
plt.imshow(gray_img, cmap='gray')

✅ 显示热力图(矩阵):

data = np.random.rand(10, 10)
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.show()


3. plt.imsave() —— 保存图像数组为图片文件

plt.imsave('output.png', img, cmap='gray')  # 若为灰度图需指定 cmap

✅ 推荐替代:

from PIL import Image
Image.fromarray(img_uint8).save('output.png')  # 注意 dtype 应为 uint8

二、其他常见 Matplotlib 函数

函数 用途
plt.figure(figsize=(w, h)) 创建新图形,设置尺寸(英寸)
plt.subplot(nrows, ncols, index) 创建子图
plt.subplots() 一次性创建 figure + axes(推荐)
plt.tight_layout() 自动调整子图间距,避免重叠
plt.savefig('file.png', dpi=300, bbox_inches='tight') 高清保存图像
plt.close() 关闭当前图形(防止内存泄漏)
plt.gca() / plt.gcf() 获取当前坐标轴 / 图形对象
plt.xlim(), plt.ylim() 设置坐标轴范围
plt.xticks(), plt.yticks() 自定义刻度标签

三、中文显示问题解决方案

Matplotlib 默认不支持中文字体,直接使用中文会导致 方框或乱码

✅ 方法一:全局设置中文字体(推荐)

import matplotlib.pyplot as plt# Windows 常用字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 黑体
# macOS 可用:['Arial Unicode MS'] 或 ['PingFang HK']
# Linux 可用:['WenQuanYi Micro Hei']plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号(如 -1)# 测试
plt.plot([1, 2, 3], [1, 4, 9])
plt.title("中文标题测试")
plt.xlabel("X轴")
plt.show()

✅ 方法二:指定字体路径(跨平台通用)

from matplotlib import font_manager# 加载字体文件(如 SimHei.ttf)
font_path = "C:/Windows/Fonts/simhei.ttf"  # Windows 示例
my_font = font_manager.FontProperties(fname=font_path)plt.plot([1, 2, 3], [1, 4, 9])
plt.title("中文标题", fontproperties=my_font)
plt.xlabel("X轴", fontproperties=my_font)
plt.show()

💡 提示:可通过以下代码查看系统可用字体:

from matplotlib.font_manager import findSystemFonts
print([f for f in findSystemFonts() if 'hei' in f.lower() or 'song' in f.lower()])

四、Matplotlib 与 Seaborn 协同使用

Seaborn 是基于 Matplotlib 的高级统计可视化库,语法更简洁,配色更美观。

安装

pip install seaborn

基本用法

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd# 设置 Seaborn 样式(会自动应用到 Matplotlib)
sns.set_style("whitegrid")  # 还有 "darkgrid", "ticks", "white"
sns.set_palette("Set2")     # 配色方案# 示例:绘制带回归线的散点图
tips = sns.load_dataset("tips")
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time")
plt.title("小费数据分布(Seaborn + Matplotlib)")
plt.show()

混合使用技巧

  • Seaborn 绘图后,仍可用 plt.title()plt.xlabel() 等 Matplotlib 函数进一步定制。
  • 使用 plt.figure()plt.subplots() 控制画布布局,再传入 Seaborn 的 ax 参数:
fig, ax = plt.subplots(figsize=(8, 5))
sns.boxplot(data=tips, x="day", y="total_bill", ax=ax)
ax.set_title("Box Plot with Seaborn on Matplotlib Axes")
plt.show()

常用 Seaborn 函数 vs Matplotlib

分析目标 Seaborn Matplotlib
分布 sns.histplot(), sns.kdeplot() plt.hist()
相关性 sns.heatmap(df.corr()) plt.imshow() + 手动标注
分类比较 sns.barplot(), sns.boxplot() plt.bar(), plt.boxplot()
散点关系 sns.scatterplot() plt.scatter()

✅ 建议:探索性数据分析用 Seaborn,精细控制或出版级图表用 Matplotlib 面向对象 API


总结

功能 推荐做法
读/写图像 优先用 PIL.Imageimageio,而非 imread/imsave
显示图像/热力图 plt.imshow() + cmap + colorbar()
中文显示 plt.rcParams['font.sans-serif'] = ['SimHei']
美化图表 sns.set_style() + Matplotlib 定制
复杂布局 plt.subplots() + ax 对象传给 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》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/982115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTF基础介绍与入门讲解

什么是CTF夺旗赛 CTF(Capture The Flag,夺旗赛) 是一种流行的信息安全竞赛形式,起源于1996年的DEFCON大会。CTF竞赛通过解决各种网络安全相关的挑战,帮助参赛者提升技术能力,同时也为网络安全领域培养人才。 当然…

2025/11/29 今天上课所以没有自我学习

2025/11/29 今天上课所以没有自我学习今日没有学习新内容,把前两天的内容随笔写了一下

基于大数据的全国降水可视化分析预测框架

基于大数据的全国降水可视化分析预测框架pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

Day7-20251130

Java标识符与数据类型摘要: Java标识符命名规则:必须以字母、$或_开头,后续可包含数字,区分大小写且不能使用关键字。虽然支持中文命名但不推荐。 数据类型分为基本类型和引用类型。基本类型包括:数值类型:byte(…

Java项目中最常用的6个设计模式

在 Java 项目开发中,以下 6 种设计模式因实用性强、应用场景广泛而被高频使用: 1. 单例模式(Singleton Pattern) 用途:确保一个类仅有一个实例,并提供全局访问点。场景:线程池、数据库连接池、配置类、日志工具…

记录容器云基于debian镜像的自由组合

当然很多镜像都是有着专用的功能,这也是docker的设计目标,但是有时候我们也想把docker当vps使用。 所以,就想基于debian的镜像自由发挥。。。第一步:基于 debian:12-slim 开启一个容器 关键要设置:挂载一个目录,…

IDEA中使用http协议

IDEA中使用http协议三、如何使用协议 3.1使用http协议 项目右键-》Git -》 repository -》 remote -》选择http协议的地址3.2 使用ssh协议 首先Git Bash或软件生成SSH秘钥 生成秘钥请参考 SSH公钥默认存储在账户的主目…

详细介绍:Elasticsearch从入门到实践:核心概念到Kibana测试与C++客户端封装

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C语言结构体全面解析与内存优化 - 实践

C语言结构体全面解析与内存优化 - 实践2025-11-30 18:23 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !…

OpenCSG x Dell联合发布面向AI原生企业的下一代IT解决方案

在全球迈向“智能体时代”的背景下,OpenCSG(开放传神)近日发布与戴尔科技基础设施深度集成的参考架构方案。该方案结合了 OpenCSG 的 CSGHub 企业级平台、Xnet 智能传输协议、Dell PowerScale 智能存储系统和 Dell …

ESP32C3开发指南(基于IDF):console控制台命令行交互功能 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

vue+devtools下载地址

https://crxdl.com/search?q=vue+devtools 上传一个包到: https://files.cnblogs.com/files/stubborn-dude/hkddcnbhifppgmfgflgaelippbigjpjo_crxdl.com_v3_5.3.4.0.zip?t=1764497205&download=true

剑出鞘

锻造矛盾的综合无处不在 冥想似乎也无法摒弃的思绪 就让它随风飘散 文字的隐喻透露阴郁 至今已然明白 我们都面临抉择 但我确信 取舍最终归于同一 倘若非然 那便要“该出手时就出手” 倒计时还在迫近 也许是时候迈开双…

第4篇 Scrum 冲刺博客

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/homework/13474这个作业的目标 完…

渗透测试中的方法论

什么是渗透测试? 在网络安全领域,渗透测试是衡量组织防御体系有效性的关键手段。然而,一个真正专业、有价值的渗透测试,绝非简单的“黑客工具堆砌”或随机的攻击尝试。其背后是一套严谨、系统化的方法论。这套方法…

德国首个AI科学中心启动研究合作

某中心与马克斯普朗克学会合作成立科学中心,聚焦人工智能、计算机视觉和机器学习研究,包含博士奖学金项目和700万欧元初始资金,推动AI技术发展与应用创新。某中心与马克斯普朗克学会启动科学中心合作 这是某中心在美…

Google Benchmark:高性能C++代码基准测试框架

Google Benchmark是一个专业的C++微基准测试库,提供精确的性能测量、统计分析和复杂度计算,支持多线程测试和自定义计数器,帮助开发者优化代码性能。Google Benchmark:高性能C++代码基准测试框架 项目描述 Google …

医疗小程序02用户注册 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

最全、最清晰、C++的 lower_bound / upper_bound 总结

最全、最清晰的 lower_bound / upper_bound 总结,包含: ✔ 功能解释(通俗 + STL 定义) ✔ 返回值含义 ✔ 典型代码例子 ✔ 在竞赛中的常用技巧 ✔ 与 equal_range 的关系 ✔ 可视化图示🔵 1. lower_bound / uppe…

密码系统设计实验3-2

密码系统设计实验3-2密码系统设计实验3-2