Python绘制直方图

news2024/9/23 19:18:18

文章目录

    • 初步
    • 参数
    • 绘图类型
    • 多组数据直方图对比

初步

对于大量样本来说,如果想快速获知其分布特征,最方便的可视化方案就是直方图,即统计落入不同区间中的样本个数。

以正态分布为例

import numpy as np
import matplotlib.pyplot as plt

xs = np.random.normal(0, 1, size=(5000))
fig = plt.figure()
for i,b in enumerate([10, 50, 100, 200],1):
    ax = fig.add_subplot(2,2,i)
    plt.hist(xs, bins=b)

plt.show()

其中bins参数用于调控区间个数,出图结果如下

在这里插入图片描述

参数

直方图函数的定义如下

hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)

除了xbins之外,其他参数含义为

  • range 绘图区间,默认将样本所有范围纳入其中
  • densityTrue时,纵坐标单位是占比
  • weightsx个数相同,表示每个值所占权重
  • cumulativeTrue时,将采取累加模式
  • bottom y轴起点,有了这个,可以对直方图进行堆叠
  • histtype 绘图类型
  • align 对其方式,可选left, mid, right三种,代表左中右
  • oritentation 绘制方向,可选vertical和horizontal两种
  • rwitdth 数据条宽度
  • logTrue时,开启对数坐标
  • color, label 颜色,标签
  • stacked

绘图类型

histtype共有4个选项,分别是bar, barstacked, step以及stepfilled,其中barstacked表示堆叠,下面对另外三种参数进行演示

types = ['bar', 'step', 'stepfilled']
fig = plt.figure()
for i,t in enumerate(types,1):
    ax = fig.add_subplot(1,3,i)
    plt.hist(xs, bins=50, histtype=t, rwidth=0.5)

plt.show()

效果如下

在这里插入图片描述
堆叠直方图,就是把多个直方图叠在一起

bins = [10, 30, 100]
ws = [1, 0.7, 0.5]

for b,w in zip(bins, ws):
    print(b,w)
    plt.hist(xs, bins=b, density=True, 
        histtype='barstacked', rwidth = w, alpha=w)

plt.show()

效果如下

在这里插入图片描述

多组数据直方图对比

直方图中设置了rwidth选项,这意味着可以通过合理安排数据条宽度,以实现多组数据直方图在一个图像中更加

N = 10000
labels = ["norm", "power", "poisson"]
data = np.array([
    np.random.normal(0, 1, size=N)**2,
    np.random.power(5, size=N),
    np.random.uniform(0, 1, size=N)
]).T

plt.hist(data, 50, density=True, range=(0,1), label=labels)
plt.legend()
plt.show()

其中,data为3组统计数据,hist函数会自行规划画布,效果如下

在这里插入图片描述

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

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

相关文章

用c++实现大小端序互转(字符串方法)

今天在逆一个RC4加密算法&#xff0c;忘了IDA如何自动将大小端序互转的按键&#xff0c;索性自己写了一个&#xff0c;因为是用字符串方法&#xff0c;所以理论上长度是管够的 #include <iostream> #include <string> using namespace std; int main() {string m_…

macOS 14 Sonoma Beta 测试版体验,不影响主力系统

今年的 WWDC 上 Apple 依旧保持往年的发布节奏&#xff0c;公布了今年的 macOS 新版本&#xff1a;macOS Sonoma&#xff0c;不过和以往有些不太一样的是&#xff0c;这一次 Apple 将测试版系统直接下发给了普通开发者账户&#xff0c;对于一般用户简单注册就可以直接获得 macO…

Windows VScode如何配置与使用git?

当我们在VScode中编写代码后&#xff0c;需要提交到git仓库时&#xff0c;但是我们又不想切换到git的命令行窗口&#xff0c;我们可以在VScode中配置git&#xff0c;然后就可以很方便快捷的把代码提交到仓库中。 1. 官网下载安装Git命令行工具 根据自己的电脑系统&#xff0c…

分布式ELK日志文件分析系统(曾经沧海难为水,除却巫山不是云)

文章目录 一、ELK 概述1. 为什么要使用 ELK2. 完整日志系统基本特征3. ELK 简介3.1 ElasticSearch&#xff08;ES&#xff09;3.2 Kiabana3.3 Logstash3.4 其它组件Filebeat缓存/消息队列Fluentd 4. ELK 的工作原理5. Linux 系统内核日志消息的优先级别 二、 部署 ELK 集群服务…

基于matlab检测交通视频中的汽车(附源码)

一、前言 此示例说明如何使用工具箱可视化和分析视频或图像序列。此示例来检测交通视频中的浅色汽车。请注意&#xff0c;VideoReader 的有些功能特定于平台&#xff0c;可能无法在某些平台上读取提供的 Motion JPEG2000 视频。 二、步骤 步骤 1&#xff1a;使用 VideoReade…

用IDEA写第一个Spring程序 HelloWorld

用IDEA写第一个Spring程序 HelloWorld 环境 Orcal JDK&#xff1a;1.8.0_341 maven&#xff1a;3.9.3 Spring&#xff1a;5.3.10 IDEA&#xff1a;2023.1.2 1. 安装JDK和IDEA 2. 安装maven并配置环境变量、换源 3. IDEA中maven属性配置&#xff0c;主要是版本和settings文件及…

React 新版官方文档 (一) useReducer 用法详解

useReducer useReducer 是一个可以让你向组件中添加 reducer 的 Hook const [state, dispatch] useReducer(reducer, initialArg, init?)基本用法 const reducer (state, action) > { ... } const MyComponent () > {const [state, dispatch] useReducer(reducer…

820. 递归求斐波那契数列

链接&#xff1a; 原题 题目&#xff1a; 请使用递归的方式求斐波那契数列的第 nn 项&#xff0c;下标从1开始。 斐波那契数列&#xff1a;1,1,2,3,5…1,1,2,3,5…&#xff0c;这个数列从第 33 项开始&#xff0c;每一项都等于前两项之和 输入格式 共一行&#xff0c;包含整数 …

npm 包和模块简介

目录 1、关于公共npm注册表 2、关于包和模块 2.1、关于包 2.2、关于包格式 2.3、npm包git URL格式 2.4、关于模块 3、关于范围 3.1、作用域和包的可见性 4、关于公共软件包 5、关于私有包 6、npm包范围、访问级别和可见性 1、关于公共npm注册表 公共npm注册表是Jav…

学习单片机的三个步骤:基础知识、编程语言和实践项目

当然&#xff01;学习单片机的过程可以分为以下三个步骤&#xff1a; 学习基础知识&#xff1a;在开始学习单片机之前&#xff0c;首先需要掌握一些基础知识。了解数字电子学和模拟电子学的基本原理是很重要的&#xff0c;包括数字和模拟信号、逻辑门、计数器、寄存器等。还需…

K8S应用安全检测(调用分析 容器健康 审计日志)

应用安全检测 1 应用安全检测1.1 调用分析1.1.1 sysdig基础1.1.2 命令实践 1.2 容器监控1.2.1 CAdvisor1.2.2 Falco基础1.2.3 Falco实践1.2.4 进阶实践1.2.5 可视化实践 1.3 审计日志1.3.1 日志解读1.3.2 审计日志 1 应用安全检测 1.1 调用分析 1.1.1 sysdig基础 学习目标 …

第六章 mac上用的软件

1、brew.sh/index_zh-cn 2、网易有道词典 3、SizeUP 4、 5、chrome浏览器插件 6、快捷键

最近,智慧公厕空位引导系统非常受园区、写字楼、工厂、大型商场青睐,大家都在争着上!

随着城市化进程的不断推进&#xff0c;楼宇智慧公厕管理系统的应用已经成为城市管理的重要一环。通过智能化的监控和管理&#xff0c;公厕的卫生状况得到了有效控制&#xff0c;为市民提供了更好的公厕服务。一、楼宇智慧公厕系统案例展示楼宇智慧公厕系统是一种基于智能科技的…

基础算法-差分矩阵

&#xff08;一&#xff09;课堂笔记 &#xff08;二&#xff09;思路详解 如果扩展到二维&#xff0c;我们需要让二维数组被选中的子矩阵中的每个元素的值加上c,是否也可以达到O(1)的时间复杂度。答案是可以的&#xff0c;考虑二维差分。 a[][]数组是b[][]数组的前缀和数组&a…

less预处理语言的运用之-变量拼接那点事

less语法的技巧总结&#xff0c;很基础&#xff0c;熟练掌握后能提高我们在大型项目中的开发效率 a:0.5; showdaw-px:100; mkcolor1:#6ec5ff; num:1; .outer{//拼接的字符串在变量后面&#xff0c;需要在冒号后面加~width:~"{showdaw-px}px";//拼接的字符串在冒号后…

Vue脚手架使用 【实战篇】

一、一个组件引用另一个组件&#x1f349; (1) 引入被引用的组件&#x1f95d; 自己创建的组件 lzq.vue 组件必须创建在components文件夹下 将自己创建的组件导入到主页面中 (2)声明该组件&#x1f95d; 本人理解&#xff1a; 声明组件可以理解为声明一个变量一样 (3)使用组…

【sql注入-报错注入2】GTID_SUBTRACT()函数 报错注入

目录 GTID_SUBTRACT()报错注入 一、语法介绍&#xff1a; 二、报错原因 网络安全小圈子 &#xff08;***注&#xff1a;注意看版本要求&#xff09; GTID_SUBTRACT()报错注入 一、语法介绍&#xff1a; 版本&#xff1a; MySQL >5.6 GTID_SUBTRACT()函数是MySQL中的一…

Unity20223.4f1中添加Tile的方法

如图&#xff0c;按顺序选择添加Rectangular&#xff08;矩形地图&#xff09;即可&#xff0c;矩形是常规瓦片地图 除常规瓦片地图外&#xff0c;Unity 还提供 Hexagonal Point Top Tilemap 和 Hexagonal Flat Top Tilemap 瓦片地图。六角形瓦片通常用于战略类桌面游戏&#x…

vertical-align middle不生效如何修改

vertical-align middle不生效如何修改 vertical-align的定义1.在父元素中增加display:table-cell&#xff0c;vertical-align 写在在父元素中2.在父元素中增加空的span元素&#xff0c;并设置其高度为100%&#xff0c;vertical-middle居中3.父元素line-height 100% 和子元素ver…

迭代读取文件

使用 torch.utils.data.dataset.Dataset 收集数据信息&#xff0c;创建数据集。 使用 import torch.utils.data.dataloader 创建一个可以批量迭代的数据载入器&#xff0c;并通过 for 循环批量读取所有文件的数据。 import torch.utils.data.dataset as dataset import torch…