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

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...