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

R语言绘制柱状图

柱状图是一种数据可视化工具。由 x 轴和 y 轴构成,x 轴表示类别,y 轴为数据数值。以矩形柱子展示数据大小,便于直观比较不同类别数据差异及了解分布。广泛应用于销售分析、统计、项目管理、科学研究等领域。可定制颜色、宽度等属性,有标题和标签辅助理解。它简洁直观,为理解分析数据提供有力支持。

0x01 barplot()函数

一、基本语法
barplot(height, names.arg = NULL,...)
1.height:指定柱状图的高度,可以是一个数值向量或矩阵。如果是向量,将绘制简单的柱状图;如果是矩阵,将绘制分组柱状图或堆积柱状图,具体取决于其他参数的设置。
2.names.arg:用于指定柱状图的横坐标标签,可以是一个字符向量。如果不指定,将使用默认的整数序列作为标签。

二、参数说明
1.width:柱子的宽度,默认为 1。
2.space:柱子之间的间隔,默认为 0。如果是绘制分组柱状图,可以设置适当的间隔以便区分不同组的柱子。
3.col:柱子的颜色,可以是单个颜色值或颜色向量,对应不同的柱子。
4.horiz:逻辑值,决定是否绘制水平柱状图。默认值为 FALSE,绘制垂直柱状图;设置为 TRUE 则绘制水平柱状图。
5.beside:逻辑值,当 height 是矩阵时,决定绘制分组柱状图(beside = TRUE)还是堆积柱状图(beside = FALSE)。
6.axes:逻辑值,显示坐标轴。
7.border:柱子边框颜色。

三、示例用法
1.绘制简单柱状图:

values <- c(10, 15, 20)
barplot(values)

2.绘制带有横坐标标签的柱状图:

names <- c("Item A", "Item B", "Item C")
values <- c(10, 15, 20)
barplot(values, names.arg = names)

3.绘制分组/堆积柱状图:

#设置随机数生成器的种子
set.seed(123)#rnorm()函数用于生成服从正态分布的随机数
#n:表示要生成的随机数的数量。
#mean:正态分布的均值,默认为 0。
#sd:正态分布的标准差,默认为 1。
group1 <- rnorm(3, mean = 10, sd = 2)
group2 <- rnorm(3, mean = 15, sd = 3)#使用 cbind() 函数将两个向量 group1 和 group2 合并为一个矩阵对象 data。
#也可以使用data.frame()将两个向量 group1 和 group2合并成一个数据框,再使用as.matrix()将数据框对象转化为矩阵矩阵。
data <- cbind(group1, group2)#使用t()函数进行数据转置
data1 <- t(data)#绘制分组柱状图
barplot(data1, beside = TRUE, col = c("blue", "red"), names.arg = c("A", "B", "C"))#也可以将beside的参数设置为FALSE来绘制堆积柱状图
barplot(data1, beside = FALSE, col = c("blue", "red"), names.arg = c("A", "B", "C"))#添加图例
legend("topright", legend = c("Group 1", "Group 2"), fill = c("blue", "red"))

0x02 使用 ggplot2包

一、加载ggplot2包和gcookbook数据集

library(ggplot2)
#gcookbook是一个包含多个数据集的包,这些数据集通常用于数据分析和可视化教学。
library(gcookbook)
#接下来将使用gcookbook数据集中的cabbage_exp这个数据进行演示

二、绘制简单柱状图
使用ggplot函数和geom_bar几何对象来绘制柱状图。

ggplot(cabbage_exp, aes(x = Date, y = Weight)) +geom_bar(stat = "identity", fill = "red",width = 0.5)

在这个例子中,aes(x = Date, y = Weight)指定了横坐标为Date变量,纵坐标为Weight变量。stat = "identity"表示指定了柱状图的高度Weight(y),fill = "steelblue"设置柱子的填充颜色为红色,width指定了柱状的宽度为0.5,另外我们这里用fill而不用color是因为color改变的是柱子边框的颜色。

三、堆积柱状图
如果要绘制堆积柱状图,可以扩展数据并使用fill参数进行分组。

ggplot(cabbage_exp, aes(x = Date, y = Weight,fill = Cultivar)) +geom_bar(stat = "identity")

在这个例子中,fill = Cultivar将数据按照Cultivar变量进行分组。

四、水平分组柱状图
我们也可以添加position = "dodge"这个参数来绘制水平分组柱状图。

ggplot(cabbage_exp, aes(x = Date, y = Weight,fill = Cultivar)) +geom_bar(position = "dodge",stat = "identity")

同时我们也可以使用position_dodge()设置柱子的位置为并列方式,并且指定了组间的间隔。

ggplot(cabbage_exp, aes(x = Date, y = Weight,fill = Cultivar)) +geom_bar(position = position_dodge(0.7) ,stat = "identity",width = 0.5) +labs(title = "cabbage_exp",x = "Date", y = "Weight",fill = "Cultivar")
#labs()设置标签

五、正负分离柱状图(双向柱状图)
很多时候我们需要查看一个数据的变化形式,我们会以某一个值为基准,按颜色进行区分,去做一个柱状图,这种分离方式有助于直观地比较正负两个方向的数据大小和变化趋势,在经济数据分析、温度变化展示、财务数据呈现等不同领域都能得到很好的应用。

#加载ggplot2包
library(ggplot2)
#加载gcookbook数据集,这里我们需要用到climate数据进行演示,这个数据是1800年至2011年全球气候温度异常数据
library(gcookbook)
#使用subset()函数提取climate中Source列中名为“Berkeley”且Year列中大于等于1900的数据,赋值给climate_part
climate_part <- subset(climate,Source == "Berkeley" & Year >= 1900)
#Year作为x轴,Anomaly10y作为y轴,绘制柱状图
ggplot(climate_part,aes(x = Year,y = Anomaly10y)) + geom_bar(stat = "identity")

由于我们这里需要将Anomaly10y中以0位基准,按颜色来进行区分,这里我们在对数据进行一些处理,让它展现出颜色区分的样子。

#在climate_part数据集后面增加一列p,判断Anomaly10y的值是否大于0,对P列的值进行真或假的赋值。这样我们就可以以P值的真假作为我们的一个因子,然后对我们的颜色进行一个区分
climate_part$p <- climate_part$Anomaly10y > 0
#fill = p:表示以p值的真假进行区分
#scale_fill_manual:手动设定颜色
#guide = FALSE:不显示图例
ggplot(climate_part,aes(x = Year,y = Anomaly10y,fill = p)) + geom_bar(stat = "identity") +scale_fill_manual(values = c("grey","red4"),guide = FALSE)

相关文章:

R语言绘制柱状图

柱状图是一种数据可视化工具。由 x 轴和 y 轴构成&#xff0c;x 轴表示类别&#xff0c;y 轴为数据数值。以矩形柱子展示数据大小&#xff0c;便于直观比较不同类别数据差异及了解分布。广泛应用于销售分析、统计、项目管理、科学研究等领域。可定制颜色、宽度等属性&#xff0…...

GNU/Linux - tarball文件介绍介绍

Linux 中的 tarball 文件是将多个文件和目录归档到一个文件中的常用方法&#xff0c;通常用于备份、分发或打包目的。术语 “tarball ”来源于 “tar”&#xff08;磁带归档的缩写&#xff09;命令的使用&#xff0c;该命令最初设计用于将数据写入磁带等顺序存储设备。如今&…...

AppointmentController

目录 1、 AppointmentController 1.1、 删除预约单据信息 1.2、 反审核预约单 1.3、 SelectToMainten AppointmentController using QXQPS.Models; using QXQPS.Vo; using System; using System.Collections; using System.Collections.Generic; using System.L…...

网站建设完成后,切勿让公司官网成为摆设

在当今这个数字化时代&#xff0c;公司官网已经成为企业展示形象、传递信息、吸引客户的重要平台。然而&#xff0c;许多企业在网站建设完成后&#xff0c;往往忽视了对官网的持续运营和维护&#xff0c;导致官网逐渐沦为摆设&#xff0c;无法发挥其应有的作用。为了确保公司官…...

独孤思维:闲得蛋疼才去做副业

独孤现实中玩的要好的朋友。 他们都只在自己的社交圈&#xff0c;工作圈链接。 没有人知道&#xff0c;副业可以这么玩。 所以他们很好奇&#xff0c;问我&#xff0c;独孤&#xff0c;你最开始是怎么知道这些副业的&#xff1f; 其实&#xff0c;独孤最开始接触副业&#…...

vulnhub靶场之hackablell

一.环境搭建 1.靶场描述 difficulty: easy This works better with VirtualBox rather than VMware 2.靶场下载 https://download.vulnhub.com/hackable/hackableII.ova 3.靶场启动 二.信息收集 1.寻找靶场的真实ip nmap -SP 192.168.246.0/24 arp-scan -l 根据上面两个…...

《浔川社团官方通报 —— 为何明确 10 月 2 日上线的浔川 AI 翻译 v3.0 再次被告知延迟上线》

《浔川社团官方通报 —— 为何明确 10 月 2 日上线的浔川 AI 翻译 v3.0 再次被告知延迟上线》 各位关注浔川社团的朋友们&#xff1a; 大家好&#xff01;首先&#xff0c;我们要向一直期待浔川 AI 翻译 v3.0 上线的朋友们致以最诚挚的歉意。原定于 10 月 2 日上线的浔川 AI 翻…...

加密与安全_HOTP一次性密码生成算法

文章目录 HOTP 的基础原理HOTP 的工作流程HOTP 的应用场景HOTP 的安全性安全性增强措施Code生成HOTP可配置项校验HOTP可拓展功能计数器&#xff08;counter&#xff09;计数器在客户端和服务端的作用计数器的同步机制客户端和服务端中的计数器表现服务端如何处理计数器不同步计…...

ResNet18果蔬图像识别分类

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…...

深度强化学习中收敛图的横坐标是steps还是episode?

在深度强化学习&#xff08;Deep Reinforcement Learning, DRL&#xff09;的收敛图中&#xff0c;横坐标选择 steps 或者 episodes 主要取决于算法的设计和实验的需求&#xff0c;两者的差异和使用场景如下&#xff1a; Steps&#xff08;步数&#xff09;&#xff1a; 定义&a…...

一个真实可用的登录界面!

需要工具&#xff1a; MySQL数据库、vscode上的php插件PHP Server等 项目结构&#xff1a; login | --backend | --database.sql |--login.php |--welcome.php |--index.html |--script.js |--style.css 项目开展 index.html&#xff1a; 首先需要一个静态网页&#x…...

Vue中watch监听属性的一些应用总结

【1】vue2中watch的应用 ① 简单监视 在 Vue 2 中&#xff0c;如果你不需要深度监视&#xff0c;即只需监听顶层属性的变化&#xff0c;可以使用简写形式来定义 watch。这种方式更加简洁&#xff0c;适用于大多数基本场景。 示例代码 假设你有一个 Vue 组件&#xff0c;其中…...

MongoDB-aggregate流式计算:带条件的关联查询使用案例分析

在数据库的查询中&#xff0c;是一定会遇到表关联查询的。当两张大表关联时&#xff0c;时常会遇到性能和资源问题。这篇文章就是用一个例子来分享MongoDB带条件的关联查询发挥的作用。 假设工作环境中有两张MongoDB集合&#xff1a;SC_DATA&#xff08;学生基本信息集合&…...

Redis数据库与GO(一):安装,string,hash

安装包地址&#xff1a;https://github.com/tporadowski/redis/releases 建议下载zip版本&#xff0c;解压即可使用。解压后&#xff0c;依次打开目录下的redis-server.exe和redis-cli.exe&#xff0c;redis-cli.exe用于输入指令。 一、基本结构 如图&#xff0c;redis对外有个…...

expressjs,实现上传图片,返回图片链接

在 Express.js 中实现图片上传并返回图片链接&#xff0c;你通常需要使用一个中间件来处理文件上传&#xff0c;比如 multer。multer 是一个 node.js 的中间件&#xff0c;用于处理 multipart/form-data 类型的表单数据&#xff0c;主要用于上传文件。 以下是一个简单的示例&a…...

爬虫——XPath基本用法

第一章XML 一、xml简介 1.什么是XML&#xff1f; 1&#xff0c;XML指可扩展标记语言 2&#xff0c;XML是一种标记语言&#xff0c;类似于HTML 3&#xff0c;XML的设计宗旨是传输数据&#xff0c;而非显示数据 4&#xff0c;XML标签需要我们自己自定义 5&#xff0c;XML被…...

常见排序算法汇总

排序算法汇总 这篇文章说明下排序算法&#xff0c;直接开始。 1.冒泡排序 最简单直观的排序算法了&#xff0c;新手入门的第一个排序算法&#xff0c;也非常直观&#xff0c;最大的数字像泡泡一样一个个的“冒”到数组的最后面。 算法思想&#xff1a;反复遍历要排序的序列…...

Golang | Leetcode Golang题解之第459题重复的子字符串

题目&#xff1a; 题解&#xff1a; func repeatedSubstringPattern(s string) bool {return kmp(s s, s) }func kmp(query, pattern string) bool {n, m : len(query), len(pattern)fail : make([]int, m)for i : 0; i < m; i {fail[i] -1}for i : 1; i < m; i {j : …...

0.计网和操作系统

0.计网和操作系统 熟悉计算机网络和操作系统知识&#xff0c;包括 TCP/IP、UDP、HTTP、DNS 协议等。 常见的页面置换算法&#xff1a; 先进先出&#xff08;FIFO&#xff09;算法&#xff1a;将最早进入内存的页面替换出去。最近最少使用&#xff08;LRU&#xff09;算法&am…...

探索Prompt Engineering:开启大型语言模型潜力的钥匙

前言 什么是Prompt&#xff1f;Prompt Engineering? Prompt可以理解为向语言模型提出的问题或者指令&#xff0c;它是激发模型产生特定类型响应的“触发器”。 Prompt Engineering&#xff0c;即提示工程&#xff0c;是近年来随着大型语言模型&#xff08;LLM&#xff0c;Larg…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...