人工智能之数据分析 Matplotlib:第四章 图形类型

人工智能之数据分析 Matplotlib

第四章 图形类型


@

目录
  • 人工智能之数据分析 Matplotlib
  • 前言
  • 一、散点图(Scatter Plot)
    • 用途
    • 基本语法
    • 示例
  • 二、柱形图(Bar Chart)
    • 用途
    • 垂直柱形图
    • 水平柱形图
    • 示例
  • 三、饼图(Pie Chart)
    • 用途
    • 基本语法
    • 示例
  • 四、直方图(Histogram)
    • 用途
    • 基本语法
    • 示例
  • 五、其他常用图表
    • 1. 折线图(Line Plot)
    • 2. 箱线图(Box Plot)
    • 3. 面积图(Area Plot)
    • 4. 热力图(Heatmap)
    • 5. 3D 图(需 mpl_toolkits.mplot3d
    • 6. 子图(Multiple Subplots)
  • 六、选择建议
  • 补充:美化建议
  • 后续
  • 资料关注


前言

Matplotlib 支持多种图表类型。本文将详细介绍 散点图、柱形图、饼图、直方图 以及其他常见图表(如箱线图、热力图、面积图、3D 图等)的绘制方法、参数说明和典型应用场景。


一、散点图(Scatter Plot)

用途

显示两个变量之间的关系,常用于观察相关性、聚类或异常值。

基本语法

plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, alpha=None)
  • x, y:数据点坐标
  • s:点的大小(可为标量或数组)
  • c:颜色(可为单色、颜色列表或数值映射到 colormap)
  • marker:标记样式(如 'o', '^', 's'
  • alpha:透明度(0~1)
  • cmap:颜色映射(配合数值型 c 使用)

示例

import matplotlib.pyplot as plt
import numpy as npx = np.random.randn(100)
y = np.random.randn(100)
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100)plt.scatter(x, y, c=colors, s=sizes, alpha=0.6, cmap='viridis')
plt.colorbar()  # 显示颜色条
plt.title("Scatter Plot with Color and Size")
plt.show()


二、柱形图(Bar Chart)

用途

比较不同类别之间的数值大小。

垂直柱形图

plt.bar(x, height, width=0.8, color=None, label=None)

水平柱形图

plt.barh(y, width, height=0.8)

示例

categories = ['A', 'B', 'C', 'D']
values = [3, 7, 5, 9]plt.bar(categories, values, color='skyblue')
plt.title("Bar Chart")
plt.ylabel("Value")
plt.show()

💡 可叠加多个 bar() 实现分组或堆叠柱状图。


三、饼图(Pie Chart)

用途

显示各部分占总体的比例(适用于分类较少的情况)。

基本语法

plt.pie(sizes, labels=None, autopct=None, startangle=0, explode=None, colors=None)
  • sizes:各扇区大小(自动归一化)
  • labels:标签
  • autopct='%1.1f%%':显示百分比
  • explode:突出某一部分(如 [0, 0.1, 0, 0]
  • startangle:起始角度(默认从 x 轴开始)

示例

sizes = [25, 35, 20, 20]
labels = ['Apple', 'Banana', 'Cherry', 'Date']
explode = (0, 0.1, 0, 0)  # 突出 Bananaplt.pie(sizes, labels=labels, autopct='%1.1f%%', explode=explode, startangle=90)
plt.title("Pie Chart")
plt.axis('equal')  # 保证圆形
plt.show()


四、直方图(Histogram)

用途

展示数据的分布情况(频率分布)。

基本语法

plt.hist(data, bins=10, range=None, density=False, alpha=1.0, color=None)
  • data:一维数组
  • bins:分箱数量(整数或边界列表)
  • density=True:归一化为概率密度(面积=1)
  • alpha:透明度(便于叠加多个直方图)

示例

data = np.random.normal(100, 15, 1000)  # 正态分布plt.hist(data, bins=30, color='lightgreen', edgecolor='black', alpha=0.7)
plt.title("Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()


五、其他常用图表

1. 折线图(Line Plot)

plt.plot(x, y, linestyle='-', marker='o')

最基础的连续数据趋势图。


2. 箱线图(Box Plot)

显示数据的五数概括(最小值、Q1、中位数、Q3、最大值)及异常值。

plt.boxplot([data1, data2], labels=['Group1', 'Group2'])


3. 面积图(Area Plot)

强调累积总量随时间的变化。

plt.stackplot(x, y1, y2, labels=['A', 'B'], alpha=0.7)


4. 热力图(Heatmap)

用颜色表示矩阵中数值大小(需结合 imshowpcolormesh)。

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

更推荐使用 Seabornsns.heatmap(),功能更强大。


5. 3D 图(需 mpl_toolkits.mplot3d

from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.random.randn(100)
y = np.random.randn(100)
z = np.random.randn(100)
ax.scatter(x, y, z)
plt.show()


6. 子图(Multiple Subplots)

使用 plt.subplots() 创建多图布局:

import matplotlib.pyplot as plt import numpy as np  
# 创建 2x2 子图 
fig, axs = plt.subplots(2, 2, figsize=(10, 8))  
# 第一个子图:折线图 
x = np.linspace(0, 10, 100) 
y = np.sin(x) 
axs[0, 0].plot(x, y) 
axs[0, 0].set_title('Sine Wave')  
# 第二个子图:散点图 
axs[0, 1].scatter([1, 2, 3], [4, 5, 6]) 
axs[0, 1].set_title('Scatter')  
# 第三个:柱状图 
axs[1, 0].bar(['A', 'B', 'C'], [3, 7, 5]) 
axs[1, 0].set_title('Bar Chart')  
# 第四个:直方图 
data = np.random.randn(1000) 
axs[1, 1].hist(data, bins=20) 
axs[1, 1].set_title('Histogram')  
plt.tight_layout() 
plt.show()


六、选择建议

图表类型 适用场景
散点图 两变量关系、聚类分析
柱形图 类别间比较
饼图 构成比例(类别 ≤ 5)
直方图 数据分布形态
箱线图 分布离散程度、异常值检测
折线图 时间序列、趋势变化
热力图 矩阵/相关性可视化

补充:美化建议

  • 使用 plt.style.use('seaborn-v0_8')'ggplot' 改变整体风格
  • 设置字体:plt.rcParams['font.sans-serif'] = ['SimHei'](中文支持)
  • 保存图像:plt.savefig('chart.png', dpi=300, bbox_inches='tight')

后续

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/980248.shtml

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

相关文章

LRC阅读器更新公告

v1.0 介绍视频:用没有小说观看功能的学习机/MP3看小说!(倾听者学习机全系列破解) [新功能] 使用命令行与用户进行操作,仅编写了将TXT完整分割后放入软件的功能 [BUG] 1.由于FFmpeg不再支持Win7导致此版本仅支持Win10…

20232325 2025-2026-1 《网络与系统攻防技术》实验七实验报告

实验报告:网络欺诈与防范实践 1. 实验内容使用SET工具建立冒名网站; 使用Ettercap进行DNS欺骗; 将SET与Ettercap结合,对靶机进行钓鱼攻击; 提高防范意识,并提出具体防范方法。2. 实验目的 对DNS欺骗与冒名网站进…

XXL-JOB v3.3.0 | 分布式任务调度平台

XXL-JOB 正在角逐 “2025 年度Gitee最受欢迎的开源软件”,期待您投出宝贵一票,你的认可对我们很重要🌹~投票链接👉:https://gitee.com/activity/2025opensource?ident=ISLBOHRelease Notes1、【新增】执行器新…

为什么在Prompt优化中用CoT(思维链)

为什么在Prompt优化中用CoT(思维链)Posted on 2025-11-29 03:01 Java后端的Ai之路 阅读(0) 评论(0) 收藏 举报🌟 为啥要用CoT?——3个核心原因,简单到能喝奶茶时讲明白! 1️⃣ "别让AI跳着走,要它一…

打造专属知识大脑:个人电脑上的本地私有知识库全攻略

打造专属知识大脑:个人电脑上的本地私有知识库全攻略 为什么你需要一个本地私有知识库? 想象一下:当你突然需要查找半年前读过的那篇精彩文章,或者在会议中急需某个重要数据,却发现自己收藏的内容散落在微信、浏览…

uni-app - switchTab 跳转到 页面后不走onLoad,option无法更新 - MT

场景:tabbar页面是展示一个列表,页面中有一个搜索按钮,点击按钮进入搜索页面,输入字段以后返回tabbar页面展示相应的搜索结果,切换tabbar页面后搜索条件置空 方案1:使用 navigateTo跳转传值 坑1:因为搜索页要跳…

[1.1.1]b64steg

将文本复制到随波逐流里面,选择base64隐写解码flag为flag{Base_sixty_four_point_five}

[1.1.11]Shellcode

在https://www.a.tools/Tool.php?Id=230 解码16进制转成字符串

初学markdown,typora

MarkDown学习 "#号" 二级标题 "##" 黑体 "左右各有" 斜体 "左右一个" 斜体加粗 "左右" 删除线 "左右~~" 引用 ">号"天下英雄如过江之鲫,人…

.net core 2.1 mysql 8.0 迁移到 达梦8.4

数据准备:mysql 数据 已经成功迁移到达梦数据库里。如果用不习惯达梦管理工具,可以用 Navicat Premium 17 ,可以连接到达梦数据库。 1、达梦官网下载.net core 2.1 对应的驱动。本地尝试NuGet 包管理器 版本总是对不…

电脑中显存和内存区别?

电脑中显存和内存区别?Posted on 2025-11-29 01:38 Java后端的Ai之路 阅读(0) 评论(0) 收藏 举报显存 vs 内存:电脑里的"专属工作台"与"共享客厅" 🧠 一、最核心的区别:它们服务的对象不…

MySQL 存储过程事务和锁

MySQL的数据库数据DROP DATABASE IF EXISTS studentsdb; CREATE DATABASE IF NOT EXISTS studentsdb DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci; USE studentsdb; CREATE TABLE student_info…

你可能需要一部 Iphone

首先f12打开,选择用手机打开,悬着iphone,获得flag

LAUNCH X431 PRO3 V+ ELITE: 10.1 Touchscreen, SmartLink 2.0, Full CAN 2.0/CANFD/DoIP/J2534 Support

The Challenge: Outdated Diagnostics Can’t Keep Up with Modern Vehicles For European and American mechanics and car owners, diagnostic tools face a constant uphill battle. Today’s vehicles—from sleek…

2025 Yanhua Mini ACDP-2 Module 38: Efficient BMW G Series BDC2 Immobilizer Key Adding Tool

Simplify BMW G Series Key Programming with the Yanhua Mini ACDP-2 Module 38 For European and American automotive repair shops and BMW G Series owners, the process of immobilizer matching and key additi…

老六的字符串

首先16进制转成字符串然后base64解码之后栅栏解码发现栅栏为2时符合flag的样子,进行凯撒解码,得到flag

基于PSO粒子群优化的能源供应方,光伏发电,EV充电三方交易策略博弈算法matlab仿真

1.课题概述 基于PSO粒子群优化的能源供应方,光伏发电,EV充电三方交易策略博弈算法matlab仿真。建立综合能源园区模型与市场交易框架,构建三方非合作博弈模型,通过算例分析验证模型有效性,为综合能源园区市场运营提供…

神奇的字符

根据题目提示先进行base64解码然后16进制转成字符串最后进行凯撒解码

mysql 迁移 达梦8.4

1、首先安装达梦数据库, 下载链接:产品下载 - 武汉达梦数据库股份有限公司 2、使用达梦自带的迁移工具,可以看迁移工具的文档,很清楚。1)先在迁移管理模块右键新建工程,再点击新建的工程右键创建评估 2)选择需…

2025 CGDI A2 Key Programmer Premium: BMW G Series IMMO, WiFi, No Annual Fee

Struggling with Key Programming Challenges? Meet the CGDI A2 Premium Edition For European and American automotive professionals and car owners, modern vehicle key programming has become a complex puzz…