当前位置: 首页 > news >正文

R语言绘制直方图

直方图是一种统计图表。它将数据分成若干区间,统计每个区间内数据的数量或频率,用矩形条高度表示。能直观展现数据分布特征,如集中趋势、离散程度等。在数据分析、质量控制、市场调研等领域广泛应用,可帮助人们快速了解数据整体形态,为决策提供依据。在 R 语言中可借助特定包绘制。

0x01 使用hist()函数

一、准备数据

为方便演示,这里我们使用R语言的内置数据faithful进行演示,该数据提供了美国黄石国家公园老忠实间歇泉(Old Faithful geyser)的喷发时间和等待时间的数据。
数据集包含两列:
1.eruptions:表示老忠实间歇泉的喷发持续时间,以分钟为单位。
2.waiting:表示两次喷发之间的等待时间,也是以分钟为单位。

二、参数说明

1.hist(x):绘制直方图
2.x:要绘制直方图的数据向量。这是必需的参数。
3.breaks:指定直方图的分组边界。可以是一个整数,表示组数;也可以是一个向量,指定具体的分组边界。默认情况下,hist()会自动选择一个合适的组数。
4.col:直方图的填充颜色。可以是一个颜色名称(如 “blue”、“red” 等),也可以是一个颜色向量,为不同的组指定不同的颜色。
5.border:直方图边框的颜色。默认情况下,边框颜色与填充颜色相同,但可以通过这个参数进行单独设置。
6.freq:逻辑值。如果为TRUE(默认值),则纵坐标表示频数(每个区间内数据的数量);如果为FALSE,则纵坐标表示频率密度(每个区间内数据的数量除以区间宽度)。
7.xlabylab:分别指定 x 轴和 y 轴的标签。
8.main:直方图的标题。
9.axes:逻辑值。如果为TRUE(默认值),则绘制坐标轴;如果为FALSE,则不绘制坐标轴。
10.xlimylim:分别用于设置 x 轴和 y 轴的取值范围。例如,xlim = c(0, 100)会将 x 轴的范围限制在 0 到 100 之间。

三、应用示例

hist(faithful$eruptions)

四、美化和调整

#seq(a,b,n)表示从a到b,间隔为n
hist(faithful$waiting,freq = TRUE,breaks = seq(40,100,5),col = "red4",xlab = "waiting of faithful",main = "histogram")

0x02 使用ggplot2包

一、准备数据

假设我们有一个数据框df,包含一个数值变量value和一个分类变量group

# 创建示例数据
df <- data.frame(value = c(rnorm(100), rnorm(100, mean = 2)), group = rep(c("A", "B"), each = 100))

二、参数说明

在 R 语言的ggplot2包中,geom_histogram()函数用于绘制直方图。以下是其主要参数说明:
1.mapping:使用aes()函数设置的映射关系,通常指定要绘制直方图的数据变量,例如aes(x = var)表示将变量var映射到 x 轴用于绘制直方图。
2.bins:指定直方图的组数。可以是一个整数,也可以是一个字符串,如 "scott""fd"等,这些字符串对应不同的自动确定组数的方法。
3.binwidth:用于指定直方图中每个区间(bin)的宽度。
4.fill:直方图的填充颜色。可以是一个颜色名称(如 “blue”、“red” 等),也可以是一个变量,根据变量的值来确定不同的填充颜色。
5.color:直方图边框的颜色。默认情况下,边框颜色与填充颜色相同,但可以通过这个参数进行单独设置。
6.alpha:透明度,取值在 0(完全透明)到 1(完全不透明)之间。可以用于调整直方图的透明度,以便更好地观察数据的重叠情况。
7.position:用于调整直方图的位置,例如position = "dodge"可以将多个直方图并列放置,position = "stack"可以将多个直方图堆叠放置。
8.stat:指定统计变换的类型,默认值为 "bin",表示对数据进行分组计数以绘制直方图。可以根据需要选择其他统计变换类型。
五、其他参数
9.na.rm:逻辑值。如果为TRUE,则在绘制直方图时忽略缺失值;如果为FALSE(默认值),则包含缺失值。

三、绘制简单的直方图

使用ggplot()函数和geom_histogram()函数来绘制直方图。

library(ggplot2)
ggplot(df,aes(x = value)) + geom_histogram(binwidth = 0.2)

四、绘制分组直方图

ggplot(df, aes(x = value, fill = group)) +geom_histogram(binwidth = 0.2)

也可以添加position = "dodge"参数使不同组的直方图并列显示

ggplot(df, aes(x = value, fill = group)) +geom_histogram(binwidth = 0.2,position = "dodge")

五、绘制分面网格图

添加使用facet_grid()函数创建一个分面网格图。

ggplot(df, aes(x = value, fill = group)) +geom_histogram(binwidth = 0.2) +facet_grid(group~.)

六、绘制密度直方图

使用y =..density..参数绘制密度直方图。

ggplot(df, aes(x = value, fill = group)) +geom_histogram(binwidth = 0.2,aes(y = ..density..))

七、绘制密度直方图+密度曲线

添加使用stat_density()函数在密度直方图基础上绘制密度曲线。

#position = "identity"表示表示不进行位置调整,直接按照数据的位置绘制直方图,可能会导致不同组的直方图重叠。
#geom = "line" 指定以线条的形式绘制密度曲线。
#aes(colour = group) 将 group 变量映射到线条颜色,不同组的密度曲线将用不同的颜色显示。
ggplot(df, aes(x = value, fill = group)) +geom_histogram(position = "identity",alpha = 0.7,binwidth = 0.2,aes(y = ..density..)) +stat_density(geom = "line",position = "identity",aes(colour = group))

八、绘制分面密度直方图+密度曲线

同样我们使用facet_grid()函数就可以展示我们分面的效果。

ggplot(df, aes(x = value, fill = group)) +geom_histogram(position = "identity",alpha = 0.7,binwidth = 0.2,aes(y = ..density..)) +stat_density(geom = "line",position = "identity",aes(colour = group)) +facet_grid(group~.)

相关文章:

R语言绘制直方图

直方图是一种统计图表。它将数据分成若干区间&#xff0c;统计每个区间内数据的数量或频率&#xff0c;用矩形条高度表示。能直观展现数据分布特征&#xff0c;如集中趋势、离散程度等。在数据分析、质量控制、市场调研等领域广泛应用&#xff0c;可帮助人们快速了解数据整体形…...

论文阅读笔记-LogME: Practical Assessment of Pre-trained Models for Transfer Learning

前言 在NLP领域,预训练模型(准确的说应该是预训练语言模型)似乎已经成为各大任务必备的模块了,经常有看到文章称后BERT时代或后XXX时代,分析对比了许多主流模型的优缺点,这些相对而言有些停留在理论层面,可是有时候对于手上正在解决的任务,要用到预训练语言模型时,面…...

求二叉树的带权路径长度

二叉树的带权路径长度&#xff08;WPL&#xff09;是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T&#xff0c;采用二叉链表存储。结点结构为&#xff1a; 其中叶结点的weight域保存该结点的非负权值。设root为指向T的根结点的指针&#xff0c;请设计求T的WPL的算法…...

Hive数仓操作(十五)

Hive 开窗函数 Hive窗口函数是一种特殊的函数&#xff0c;允许用户在查询中对一组行进行计算&#xff0c;而不仅仅是单独的行。窗口函数可以在 SQL 查询中进行聚合、排名、累积计算等。这使得窗口函数在数据分析和报告生成中非常有用。 窗口函数的基本组成部分 函数类型&…...

No.12 笔记 | 网络基础:ARP DNS TCP/IP与OSI模型

一、计算机网络&#xff1a;安全的基石 1. 网络的本质&#xff1a;数字世界的神经系统 定义&#xff1a;计算机的互联互通&#xff0c;实现资源共享和信息交换组成要素&#xff1a;发送者、接收者、介质、数据、协议&#xff08;五大要素&#xff09; 2. 网络架构&#xff1…...

OpenHarmony(鸿蒙南向开发)——轻量系统STM32F407芯片移植案例

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 介绍基于STM32F407IGT6芯片在拓维信息 Niobe407 开发板上移植OpenH…...

简单易懂的springboot整合Camunda 7工作流入门教程

简单易懂的Spring Boot整合Camunda7入门教程 因为关于Spring Boot结合Camunda7的教程在网上比较少&#xff0c;而且很多都写得有点乱&#xff0c;很多概念写得太散乱&#xff0c;讲解不清晰&#xff0c;导致看不懂&#xff0c;本人通过研究学习之后就写出了这篇教学文档。 介…...

LabVIEW提高开发效率技巧----点阵图(XY Graph)

在LabVIEW开发中&#xff0c;点阵图&#xff08;XY Graph&#xff09; 是一种强大的工具&#xff0c;尤其适用于需要实时展示大量数据的场景。通过使用点阵图&#xff0c;开发人员能够将实时数据可视化&#xff0c;帮助用户更直观地分析数据变化。 1. 点阵图的优势 点阵图&…...

C++-匿名空间

匿名命名空间&#xff08;anonymous namespace&#xff09;是 C 中的一种特性&#xff0c;用于将符号&#xff08;如变量、函数或类&#xff09;限制在定义它们的源文件的作用域内。这意味着在该源文件外部&#xff0c;这些符号不可见&#xff0c;从而避免了命名冲突。 1. 定义…...

jdk的安装和环境变量配置

1.将从官网下载好的jdk放在自己想要放的位置&#xff0c;这里的位置是&#xff1a;E:\develop 2.新建一个文件夹用来放安装的jdk&#xff0c;将jdk安装的此目录&#xff0c;这里的位置是&#xff1a;E:\develop\jdk17 3.jdk安装好之后&#xff0c;点击jdk17目录&#xff0c;点…...

继承、Lambda、Objective-C和Swift

继承 东风系列导弹是镇国神器。东风41不是突然就造出来的&#xff0c;之前有很多种东风xx导弹&#xff0c;每种导弹都有自己的独特之处&#xff0c;相同之处都具备导弹基本特点。很多工厂有量产磨具的生产线&#xff0c;盖房子就图纸&#xff0c;建筑设计建设都有参考&#xff…...

设置服务器走本地代理

勾选&#xff1a; 然后&#xff1a; git clone https://github.com/rofl0r/proxychains-ng.git./configure --prefix/home/wangguisen/usr --sysconfdir/home/wangguisen/etcmakemake install# 在最后配置成本地代理地址 vim /home/wangguisen/etc/proxychains.confsocks4 17…...

刷题 -哈希

面试面试经典 150 题 - 哈希 383. 赎金信 - 一个哈希表搞定 class Solution { public:bool canConstruct(string ransomNote, string magazine) {int hash[26] {0};for (auto& ch : magazine) {hash[ch - a];}for (auto& ch : ransomNote) {if (--hash[ch - a] < …...

React响应式修改数组和对象

在React中&#xff0c;响应式地修改数组数据是一个常见的需求&#xff0c;它涉及到状态&#xff08;state&#xff09;的管理和更新。React的状态是不可变的&#xff0c;这意味着你不能直接修改状态对象中的数组元素&#xff0c;而是需要创建一个新的数组来更新状态。下面将详细…...

cerbot https证书免费自动续期

1. 简介 cerbot是一个开源的数字证书生成平台&#xff0c;简单好用。下面我们来看下安装配置和使用。 cerbot有很多种安装方式&#xff0c;有源码安装、第三方发布版本、pip安装和snap安装&#xff0c;官方推荐使用snap安装。 2. snap安装 snap官方安装文档&#xff0c;Sna…...

嵌入式硬件设计

嵌入式硬件设计是指针对嵌入式系统&#xff08;一种专用的计算机系统&#xff0c;通常嵌入到其他设备中&#xff09;进行的硬件设计工作。嵌入式系统广泛应用于消费电子、工业控制、医疗设备、汽车电子、航空航天等领域。以下是嵌入式硬件设计的主要内容和步骤&#xff1a; 1.…...

2024.09.24 校招 实习 内推 面经

&#x1f6f0;️ &#xff1a;neituijunsir 交* 流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | 毫末智行2025届校园招聘正式启动 &#xff08;内推&#xff09; 校招 | 毫末智行2025届校园招聘正式启动 &#xff08;内推&#xff09; 2、校招 | 圭目机器人 2025 校…...

GIT安装及集成到IDEA中操作步骤

最近深感GIT使用技能太差&#xff0c;我只会些皮毛&#xff0c;还是得看官网&#xff0c;总结一下常用的操作方法吧。 GIT环境配置到IDEA中安装 一、GIt的基本的安装 这个不在这里赘述了&#xff0c;自己装一个git吧 二、给IDEA指定本地GIT的安装路径 1、下图这个是我本地的…...

Java使用线程池创建线程

一、线程前言 首先我们知道&#xff0c;线程的概念如果不知道可以去看这一篇Java中的线程&#xff0c;我们这篇主要讲述的是Java怎么使用线程池创建线程&#xff0c;首先我们要对线程池有点概念&#xff0c;其实顾名思义&#xff0c;线程池就是有喝多线程的一个池子类似于&…...

mysql UDF提权(实战案例)

作者&#xff1a;程序那点事儿 日期&#xff1a;2024/09/29 16:10 什么是UDF? 全称 User Define Function &#xff08;用户自定义函数&#xff09;UDF提权&#xff0c;就是通过自定义函数&#xff0c;实现执行系统的命令。 dll&#xff08;windows&#xff0c;dll文件是c语…...

【瑞昱RTL8763E】刷屏

1 显示界面填充 用户创建的各个界面在 rtk_gui group 中。各界面中 icon[]表对界面进行描述&#xff0c;表中的每个元素代表一 个显示元素&#xff0c;可以是背景、小图标、字符等&#xff0c;UI_WidgetTypeDef 结构体含义如下&#xff1a; typedef struct _UI_WidgetTypeDef …...

【黑马点评】使用RabbitMQ实现消息队列——3.使用Jmeter压力测试,导入批量token,测试异步秒杀下单

3 批量获取用户token&#xff0c;使用jmeter压力测试 3 批量获取用户token&#xff0c;使用jmeter压力测试3.1 需求3.2 实现3.2.1 环境配置3.2.2 修改登录接口UserController和实现类3.2.3 测试类 3.3 使用jmeter进行测试3.4 测试结果3.5 将用户登录逻辑修改回去 3 批量获取用户…...

第 21 章 一条记录的多幅面孔——事务的隔离级别与 MVCC

21.1 事前准备 CREATE TABLE hero ( number INT, NAME VARCHAR ( 100 ), country VARCHAR ( 100 ), PRIMARY KEY ( number ) ) ENGINE INNODB CHARSET utf8;INSERT INTO hero VALUES ( 1, 刘备, 蜀 );21.2 事务隔离级别 在保证事务隔离性的前提下&#xff0c;使用不同的隔…...

javaScript操作dom的事件(3个案例+代码+效果图)

目录 1.焦点事件 案例:登录表单的验证 1.代码 2.效果 3.解释 2.鼠标事件 案例:单击鼠标使小球跳跃 1.代码 2.效果 3.解释 3.键盘事件 案例:使用左右键控制小球左右移动 1.代码 2.效果 ​编辑 3.解释 1.焦点事件 focus 当获得焦点时出发(不会冒泡)blur 当失去焦点时出发(不会…...

国庆期间的问题,如何在老家访问杭州办公室的网络呢

背景&#xff1a;国庆期间的问题&#xff0c;如何在老家访问杭州办公室的网络呢 实现方案&#xff1a;异地组网 实现语言&#xff1a;Java 环境&#xff1a;三个网络&#xff0c;一台拥有公网IP的服务器、一台杭州本地机房内服务器、你老家所在网络中的一台电脑&#xff08;…...

动态规划算法——三步问题

1.题目解析 2.算法原理 本题可以近似看做泰波那契数列&#xff0c;即小孩到第一个台阶需要一步&#xff0c;到第二个台阶则是到第一个台阶的步数加上第一阶到第二阶的步数&#xff0c;同理第三阶就是第二阶的步数加上第二阶到第三阶的步数&#xff0c;由于小孩只能走三步&#…...

【鸿蒙学习】深入解析鸿蒙应用与元服务:含义、区别、应用场景及创建方法

文章目录 鸿蒙应用&#xff08;HarmonyOS App&#xff09;含义用于干什么优缺点 元服务&#xff08;Atomic Service&#xff09;含义用于干什么优缺点 鸿蒙应用与元服务的区别创建方法鸿蒙应用的创建元服务的创建 总结 随着科技的不断进步&#xff0c;操作系统也在不断迭代更新…...

React学习01 jsx、组件与组件的三大属性

文章目录 jsx的介绍与语法1.真实DOM和虚拟DOM2.jsx语法 模块与模块化&#xff0c;组件与组件化模块与模块化组件与组件化 React组件React事件绑定函数式组件类式组件组件属性state组件属性props组件属性ref 尚硅谷react教程官方文档学习记录笔记01 jsx的介绍与语法 1.真实DOM和…...

项目——超级马里奥——Day(3)

一、游戏开发思路&#xff1a; 1.Frame--->BackGround--->Obstacle---->BufferedImage&#xff0c;人物等 2.BackGround的构造函数&#xff1a; 只要记住窗口里边的每一个场景&#xff0c;只要游戏一开始就已经出现在屏幕里边的&#xff0c;都是在构造函数里边 3.绘…...

测试-BUG篇

文章目录 软件测试的生命周期BUGbug的概念描述bug的要素bug级别bug的生命周期 与开发产生争执怎么办&#xff08;高频考题&#xff09; 软件测试的生命周期 软件测试贯穿于软件的整个生命周期 BUG bug的概念 是指计算机程序中存在的一个错误(error)、缺陷(flaw)、疏忽(mista…...