【第2月 day17】Matplotlib 新手设计的直方图与饼图学习内容

news2025/4/17 22:44:22

以下是专为Python新手设计的直方图与饼图学习内容,包含基础知识、代码演示及注意事项:


一、直方图(Histogram)

1. 直方图的作用
  • 展示数据分布情况(如年龄分布、成绩分布)
  • 观察数据集中趋势、离散程度
2. plt.hist() 核心参数
import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据(1000个正态分布随机数)
data = np.random.randn(1000)

# 基础直方图
plt.hist(data, 
         bins=20,        # 柱子数量(或自定义区间列表)
         color='skyblue',# 柱子颜色
         alpha=0.7,      # 透明度
         edgecolor='black') # 边框颜色

# 添加标注
plt.title('数据分布直方图')
plt.xlabel('数值范围')
plt.ylabel('频数')
plt.grid(axis='y', alpha=0.5)
plt.show()
3. 常用进阶参数
  • density=True:显示概率密度(代替频数)
  • histtype='step':阶梯状直方图
  • range=(min,max):限定数据范围

二、饼图(Pie Chart)

1. 饼图的作用
  • 展示各部分占整体的比例(如市场份额、开支分类)
2. plt.pie() 核心参数
# 示例数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']

plt.pie(sizes,
        labels=labels,         # 添加标签
        colors=colors,        # 自定义颜色
        autopct='%1.1f%%',     # 显示百分比格式
        startangle=90,         # 起始角度
        explode=(0, 0.1, 0, 0),# 突出第二部分
        shadow=True)          # 添加阴影

# 保证圆形比例
plt.axis('equal')  
plt.title('示例饼图')
plt.show()
3. 关键参数说明
  • explode:各部分突出程度(0表示不突出)
  • textprops:调整标签文字样式(如字体大小)
  • wedgeprops:调整扇形属性(如边框宽度)

三、避坑指南

  1. 直方图常见问题

    • 数据需要是一维数组
    • bins数量过多/过少会导致图形难以解读
    • 分类数据建议使用条形图代替
  2. 饼图注意事项

    • 分类不宜过多(建议≤6类)
    • 确保各块比例总和为100%
    • 重要部分尽量放在12点钟方向

四、综合练习

# 直方图+饼图组合示例
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12,5))

# 直方图
ax1.hist(np.random.randint(0,100,200), bins=10, color='teal')
ax1.set_title('分数分布')

# 饼图
sizes = [25, 35, 40]
ax2.pie(sizes, labels=['A','B','C'], autopct='%1.0f%%', 
        colors=['#ff9999','#66b3ff','#99ff99'])
ax2.set_title('品类占比')

plt.tight_layout()
plt.show()

五、学习建议

  1. 先尝试修改示例中的数值和颜色
  2. 用自己感兴趣的数据集做练习
  3. 使用plt.subplots()创建多图对比不同参数效果

掌握这些内容后,可以继续学习:

  • 箱线图(plt.boxplot())
  • 定制化样式(修改字体、添加图例)
  • 三维图表绘制

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

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

相关文章

使用Docker安装及使用最新版本的Jenkins

1. 拉取镜像 通过Windows powerShell执行命令行(2选1): -- 长期支持版 docker pull jenkins/jenkins:lts-- 最新版 docker pull jenkins/jenkins:latest 2. 创建并执行容器 你可以通过以下命令来运行Jenkins容器,执行命令&…

15-产品经理-维护需求

一、提研发需求 在产品–研发需求列表页,点击“提研发需求”按钮, 在提研发需求页面,可以选择已有的计划。也可以在计划页面里进行关联。 未编辑完的需求可以点击【存为草稿】按钮,保存为草稿状态,待编辑完成再选择提…

js前端对时间进行格式处理

时间格式处理 通过js前端,使用dayjs库进行格式化 安装dayjs库 npm install dayjs 封装成日期格式化工具类 formatter.ts // 导入 dayjs,先安装依赖 npm install dayjs import dayjs from "dayjs"; import utc from "dayjs/plugin/utc…

如何拿到iframe中嵌入的游戏数据

在 iframe 中嵌入的游戏数据是否能被获取,取决于以下几个关键因素: 1. 同源策略 浏览器的同源策略是核心限制。如果父页面和 iframe 中的内容同源(即协议、域名和端口号完全相同),那么可以直接通过 JavaScript 访问 …

Chrome 135 版本新特性

Chrome 135 版本新特性 一、Chrome 135 版本浏览器更新 ** 1. 第三方托管账户注册迁移到 OIDC 授权码流程** Chrome 135 将账户注册的登录页面从营销网站迁移到动态网站,同时也将 OpenID Connect (OIDC) 的隐式流程迁移到授权码流程。这样做的目的是进一步提升第…

【Vue-组件】学习笔记

目录 <<回到导览组件1.项目1.1.Vue Cli1.2.项目目录1.3.运行流程1.4.组件的组成1.5.注意事项 2.组件2.1.组件注册2.2.scoped样式冲突2.3.data是一个函数2.4.props详解2.5.data和prop的区别 3.组件通信3.1.父子通信3.1.1.父传子&#xff08;props&#xff09;3.1.2.子传父…

(PROFINET 转 EtherCAT)EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

型号 协议转换通信网关 PROFINET 转 EtherCAT MS-GW31 概述 MS-GW31 是 PROFINET 和 EtherCAT 协议转换网关&#xff0c;为用户提供两种不同通讯协议的 PLC 进行数据交互的解决方案&#xff0c;可以轻松容易将 EtherCAT 网络接入 PROFINET 网络中&#xff0c;方便扩展&…

关于sqlsugar实体多层List映射的问题

如上图所示&#xff0c;当一个主表&#xff08;crm_fina_pay_req&#xff09;的子表list<文件附件关系表>&#xff08; List<crm_fina_payreq_evidofpay_relation> &#xff09;中&#xff0c;还包含有sysfile&#xff08;SysFile SysFiles&#xff09;类型的文件信…

STM32 HAL库 CANFD配置工具

用法说明&#xff1a; 该工具适用于STM32HAL库&#xff0c;可一键生成CANFD的HAL库配置代码。计算依据为HAL库&#xff0c;并参考ZLG标准。 软件界面&#xff1a; 仓库地址&#xff1a; HAL CANFD Init Gen: 适用于STM32控制器的HAL库 版本说明&#xff1a; V1.2.0 &#x…

UIMeter-UI自动化软件(产品级)

前言&#xff1a;作为一个资深测试工程师&#xff0c;UI测试&#xff0c;webUI自动化测试是我们必备的技能&#xff0c;我们都知道常用的框架比如selenium、playwright、rebootframwork等等&#xff0c;但是无论哪一种框架&#xff0c;都需要测试人员去编写代码&#xff0c;进行…

企业级Java开发工具MyEclipse v2025.1——支持AI编码辅助

MyEclipse一次性提供了巨量的Eclipse插件库&#xff0c;无需学习任何新的开发语言和工具&#xff0c;便可在一体化的IDE下进行Java EE、Web和PhoneGap移动应用的开发&#xff1b;强大的智能代码补齐功能&#xff0c;让企业开发化繁为简。 立即获取MyEclipse v2025.1正式版 具…

【redis】简介及在springboot中的使用

redis简介 基本概念 Redis&#xff0c;英文全称是Remote Dictionary Server&#xff08;远程字典服务&#xff09;&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 与MySQL数据库不…

隐私计算的崛起:数据安全的未来守护者

在信息技术&#xff08;IT&#xff09;的滚滚浪潮中&#xff0c;一种新兴技术正以惊人速度崭露头角——隐私计算&#xff08;Privacy-Preserving Computation&#xff09;。2025 年&#xff0c;随着数据泄露事件频发、全球隐私法规日益严格&#xff0c;以及企业对数据协作需求的…

【Vue-vue基础知识】学习笔记

目录 <<回到导览vue基础知识1.1.创建一个vue实例1.2.vue基础指令1.2.1.v-bind1.2.2.v-model1.2.3.常用事件1.2.4.指令修饰符 1.3.计算属性1.3.1.计算属性的完整写法1.3.2.【案例】成绩 1.4.watch1.4.1.watch属性1.4.2.翻译业务实现1.4.3.watch属性的完整写法1.4.4.【案例…

【Linux网络】网络套接字socket

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/qinjh_/category_12891150.html 目录 Socket 编程预备 理解源 IP 地址和目的 IP 地址 认识端口号 端口号范围划分…

tomcat的负载均衡和会话保持

写你的想写的东西&#xff0c;写在tomcat的默认发布目录中 这里写了一个jsp的文件 访问成功 可以用nginx实现反向代理 tomcat负载均衡实现&#xff1a; 这里使用的算法是根据cookie值进行哈希&#xff0c;根据ip地址哈希会有问题.如果是同一台主机再怎么访问都是同一个ip。 t…

c++项目 网络聊天服务器 实现;QPS测试

源码 https://github.com/DBWGLX/SZU_system_programming 文章目录 技术设计编码JSON的替换Protobuf 网络线程池更高效率网络字节序的考虑send可能无法一次性发送全部数据&#xff01;EPOLLHUP , EPOLLERR 的正确处理 IO数据库操作的更高性能 开发日志2025.3a.粘包问题 2025.4b…

rnn的音频降噪背后技术原理

rnniose: 这个演示展示了 RNNoise 项目&#xff0c;说明了如何将深度学习应用于噪声抑制。其核心理念是将经典的信号处理方法与深度学习结合&#xff0c;打造一个小巧、快速的实时噪声抑制算法。它不需要昂贵的 GPU —— 在树莓派上就能轻松运行。 相比传统的噪声抑制系统&…

ubuntu 配置固定ip

在装服务器系统的时候&#xff0c;DHCP自动获取ip时&#xff0c;路由可能会重新分配ip&#xff0c;为避免产生影响&#xff0c;可以关闭DHCP将主机设置为静态ip。 系统环境 Ubuntu 22.04-Desktop 配置方式 一、如果是装的Ubuntu图形化&#xff08;就是可以用鼠标操作点击应用…

基于Coze平台实现工程项目管理SaaS软件的在线化客户服务

一、引言 在数字化转型浪潮下&#xff0c;SaaS&#xff08;软件即服务&#xff09;模式已成为企业级软件的主流交付方式。然而&#xff0c;随着用户规模的增长&#xff0c;传统人工客服模式面临响应速度慢、人力成本高、知识库更新滞后等痛点。如何利用AI技术实现客户服务的智…