当前位置: 首页 > 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语…...

阿联酋人工智能大学:AI能在战争迷雾中做出理性判断吗?

这项由阿联酋穆罕默德本扎耶德人工智能大学和美国马里兰大学共同完成的研究发表于2026年3月&#xff0c;论文编号为arXiv:2603.16642v1。有兴趣深入了解的读者可以通过该编号查询完整论文。在人类历史上&#xff0c;预测战争走向一直是个极其困难的任务。就像我们很难在暴风雨中…...

避坑指南:Xdocreport模板制作中的5个常见错误及解决方案

Xdocreport实战避坑指南&#xff1a;模板制作中的5个高频错误与深度解决方案 在Java生态中处理动态Word文档生成时&#xff0c;Xdocreport凭借其与MS Office的无缝兼容性和模板灵活性&#xff0c;已成为企业级文档自动化的重要工具。但许多开发者在从Freemarker迁移到Xdocrepor…...

颠覆PDF转换体验:Marker无缝实现25页/秒全场景文档格式精准迁移

颠覆PDF转换体验&#xff1a;Marker无缝实现25页/秒全场景文档格式精准迁移 【免费下载链接】marker 一个高效、准确的工具&#xff0c;能够将 PDF 和图像快速转换为 Markdown、JSON 和 HTML 格式&#xff0c;支持多语言和复杂布局处理&#xff0c;可选集成 LLM 提升精度&#…...

实测才敢推 AI论文工具推荐:2026最新测评与使用体验

2026年真正好用的AI论文工具&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...

【GitHub 加速计划】:解决智能家居插件获取难题的网络适配方案

【GitHub 加速计划】&#xff1a;解决智能家居插件获取难题的网络适配方案 【免费下载链接】integration 项目地址: https://gitcode.com/gh_mirrors/int/integration 在智能家居系统搭建过程中&#xff0c;插件获取往往是用户面临的首要障碍。许多优质的智能家居插件托…...

从锡膏印刷到炉温曲线:手把手调试你的第一条SMT生产线(避坑指南)

从锡膏印刷到炉温曲线&#xff1a;手把手调试你的第一条SMT生产线&#xff08;避坑指南&#xff09; 第一次接手SMT生产线调试时&#xff0c;我盯着那台二手贴片机的报警提示&#xff0c;手心全是汗。钢网上残留的锡膏像在嘲笑我的无知&#xff0c;而流水线上堆积的PCB板则不断…...

深入解析 Linux 内核中的 PCI 中断向量分配机制:pci_alloc_irq_vectors

1. PCI中断向量分配机制入门指南 第一次接触PCI设备中断处理时&#xff0c;我被各种专业术语搞得晕头转向。直到在项目里实际调试一个网卡驱动时&#xff0c;才真正理解pci_alloc_irq_vectors这个函数的重要性。想象一下&#xff0c;你的电脑就像个繁忙的快递分拣中心&#xf…...

别再死记硬背了!用HuggingFace Diffusers库5分钟搞懂Stable Diffusion的VAE、U-Net和CLIP怎么协同工作

5分钟透视Stable Diffusion核心组件&#xff1a;用HuggingFace Diffusers实战VAE/U-Net/CLIP协同机制 当你在HuggingFace Diffusers库中第一次调用StableDiffusionPipeline时&#xff0c;是否好奇过那段简短的文本提示如何变成精美图像&#xff1f;这背后是VAE、U-Net和CLIP三…...

别再到处找模板了!我用这套软著申请材料(含用户手册+源代码模板)两个月搞定

两个月高效拿下软著&#xff1a;零基础开发者的材料准备实战指南 第一次提交软著申请时&#xff0c;我盯着官网模糊的材料要求整整发呆了半小时——"用户手册需图文并茂"到底要多详细&#xff1f;"源代码前30页后30页"该怎么截取&#xff1f;连续三个晚上搜…...

Pixel Fashion Atelier保姆级教程:如何将生成结果无缝导入Aseprite进行二次编辑

Pixel Fashion Atelier保姆级教程&#xff1a;如何将生成结果无缝导入Aseprite进行二次编辑 1. 教程概述 Pixel Fashion Atelier是一款基于Stable Diffusion与Anything-v5的像素风格图像生成工具&#xff0c;特别适合创作复古RPG风格的时尚设计。本教程将手把手教你如何将生成…...