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.xlab、ylab:分别指定 x 轴和 y 轴的标签。
8.main:直方图的标题。
9.axes:逻辑值。如果为TRUE(默认值),则绘制坐标轴;如果为FALSE,则不绘制坐标轴。
10.xlim、ylim:分别用于设置 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语言绘制直方图
直方图是一种统计图表。它将数据分成若干区间,统计每个区间内数据的数量或频率,用矩形条高度表示。能直观展现数据分布特征,如集中趋势、离散程度等。在数据分析、质量控制、市场调研等领域广泛应用,可帮助人们快速了解数据整体形…...
论文阅读笔记-LogME: Practical Assessment of Pre-trained Models for Transfer Learning
前言 在NLP领域,预训练模型(准确的说应该是预训练语言模型)似乎已经成为各大任务必备的模块了,经常有看到文章称后BERT时代或后XXX时代,分析对比了许多主流模型的优缺点,这些相对而言有些停留在理论层面,可是有时候对于手上正在解决的任务,要用到预训练语言模型时,面…...
求二叉树的带权路径长度
二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T,采用二叉链表存储。结点结构为: 其中叶结点的weight域保存该结点的非负权值。设root为指向T的根结点的指针,请设计求T的WPL的算法…...
Hive数仓操作(十五)
Hive 开窗函数 Hive窗口函数是一种特殊的函数,允许用户在查询中对一组行进行计算,而不仅仅是单独的行。窗口函数可以在 SQL 查询中进行聚合、排名、累积计算等。这使得窗口函数在数据分析和报告生成中非常有用。 窗口函数的基本组成部分 函数类型&…...
No.12 笔记 | 网络基础:ARP DNS TCP/IP与OSI模型
一、计算机网络:安全的基石 1. 网络的本质:数字世界的神经系统 定义:计算机的互联互通,实现资源共享和信息交换组成要素:发送者、接收者、介质、数据、协议(五大要素) 2. 网络架构࿱…...
OpenHarmony(鸿蒙南向开发)——轻量系统STM32F407芯片移植案例
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 介绍基于STM32F407IGT6芯片在拓维信息 Niobe407 开发板上移植OpenH…...
简单易懂的springboot整合Camunda 7工作流入门教程
简单易懂的Spring Boot整合Camunda7入门教程 因为关于Spring Boot结合Camunda7的教程在网上比较少,而且很多都写得有点乱,很多概念写得太散乱,讲解不清晰,导致看不懂,本人通过研究学习之后就写出了这篇教学文档。 介…...
LabVIEW提高开发效率技巧----点阵图(XY Graph)
在LabVIEW开发中,点阵图(XY Graph) 是一种强大的工具,尤其适用于需要实时展示大量数据的场景。通过使用点阵图,开发人员能够将实时数据可视化,帮助用户更直观地分析数据变化。 1. 点阵图的优势 点阵图&…...
C++-匿名空间
匿名命名空间(anonymous namespace)是 C 中的一种特性,用于将符号(如变量、函数或类)限制在定义它们的源文件的作用域内。这意味着在该源文件外部,这些符号不可见,从而避免了命名冲突。 1. 定义…...
jdk的安装和环境变量配置
1.将从官网下载好的jdk放在自己想要放的位置,这里的位置是:E:\develop 2.新建一个文件夹用来放安装的jdk,将jdk安装的此目录,这里的位置是:E:\develop\jdk17 3.jdk安装好之后,点击jdk17目录,点…...
继承、Lambda、Objective-C和Swift
继承 东风系列导弹是镇国神器。东风41不是突然就造出来的,之前有很多种东风xx导弹,每种导弹都有自己的独特之处,相同之处都具备导弹基本特点。很多工厂有量产磨具的生产线,盖房子就图纸,建筑设计建设都有参考ÿ…...
设置服务器走本地代理
勾选: 然后: 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中,响应式地修改数组数据是一个常见的需求,它涉及到状态(state)的管理和更新。React的状态是不可变的,这意味着你不能直接修改状态对象中的数组元素,而是需要创建一个新的数组来更新状态。下面将详细…...
cerbot https证书免费自动续期
1. 简介 cerbot是一个开源的数字证书生成平台,简单好用。下面我们来看下安装配置和使用。 cerbot有很多种安装方式,有源码安装、第三方发布版本、pip安装和snap安装,官方推荐使用snap安装。 2. snap安装 snap官方安装文档,Sna…...
嵌入式硬件设计
嵌入式硬件设计是指针对嵌入式系统(一种专用的计算机系统,通常嵌入到其他设备中)进行的硬件设计工作。嵌入式系统广泛应用于消费电子、工业控制、医疗设备、汽车电子、航空航天等领域。以下是嵌入式硬件设计的主要内容和步骤: 1.…...
2024.09.24 校招 实习 内推 面经
🛰️ :neituijunsir 交* 流*裙 ,内推/实习/校招汇总表格 1、校招 | 毫末智行2025届校园招聘正式启动 (内推) 校招 | 毫末智行2025届校园招聘正式启动 (内推) 2、校招 | 圭目机器人 2025 校…...
GIT安装及集成到IDEA中操作步骤
最近深感GIT使用技能太差,我只会些皮毛,还是得看官网,总结一下常用的操作方法吧。 GIT环境配置到IDEA中安装 一、GIt的基本的安装 这个不在这里赘述了,自己装一个git吧 二、给IDEA指定本地GIT的安装路径 1、下图这个是我本地的…...
Java使用线程池创建线程
一、线程前言 首先我们知道,线程的概念如果不知道可以去看这一篇Java中的线程,我们这篇主要讲述的是Java怎么使用线程池创建线程,首先我们要对线程池有点概念,其实顾名思义,线程池就是有喝多线程的一个池子类似于&…...
mysql UDF提权(实战案例)
作者:程序那点事儿 日期:2024/09/29 16:10 什么是UDF? 全称 User Define Function (用户自定义函数)UDF提权,就是通过自定义函数,实现执行系统的命令。 dll(windows,dll文件是c语…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
