R语言绘制柱状图

ops/2024/10/10 20:18:44/

柱状图是一种数据可视化工具。由 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)

http://www.ppmy.cn/ops/123634.html

相关文章

转型AI产品经理需要掌握的硬知识、经理能力模型和常见AI概念梳理

近几年&#xff0c;从亚马逊&#xff0c; Facebook&#xff0c;到谷歌&#xff0c;微软&#xff0c;再到国内的BAT&#xff0c;全球最具影响力的技术公司都将目光转向了人工智能&#xff08; AI &#xff09;。2016年 AlphaGo 战胜李世石&#xff0c;把公众的目光也聚集到了人工…

k8s 中存储之 emptyDir 卷

目录 1 kubernets支持的卷的类型 2 emptyDir 卷介绍 2.1 emptyDir 的使用场景&#xff1a; 2.2 emptyDir 卷的功能&#xff1a; 3 emptyDir 卷实现容器间数据共享 3.1 实验介绍 3.2 创建 Pod 清单文件 3.3 修改 Pod 清单文件 3.4 声明清单文件并查看 Pod 是否正确创建 3.5 修改…

.rds 文件数据结构 和内容 查看方法

要查看 .rds 文件中的数据结构和内容&#xff0c;可以按照以下步骤操作&#xff1a; 1. 加载 .rds 文件&#xff1a; 使用 readRDS() 函数将 .rds 文件加载到 R 环境中&#xff1a; # 加载 .rds 文件 my_data <- readRDS("path/to/yourfile.rds")2. 检查数据结…

【Linux】man手册安装使用

目录 man(manual,手册) 手册安装: 章节区分&#xff1a; 指令参数: 使用场景&#xff1a; 手册内容列表: 手册查看快捷键: 实例: 仍致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询 在开头先提醒一下:在 man 手册中退出的方法很简单…

黑马linux笔记(转载)

学习链接 视频链接&#xff1a;黑马程序员新版Linux零基础快速入门到精通 原文链接&#xff1a;黑马程序员新版Linux零基础快速入门到精通——学习笔记 黑马Linux笔记 文章目录 学习链接01初识Linux1.1、操作系统概述1.1.1、硬件和软件1.1.2、操作系统1.1.3、常见操作系统 1.…

当页面产生滚动,位置超过侧边栏的顶部阈值后,侧边栏变为固定定位

需求&#xff1a;当页面产生滚动&#xff0c;位置超过侧边栏的 顶部阈值后&#xff0c;侧边栏变为固定定位。 解决方法&#xff1a;使用position: sticky 粘性定位 刚开始的想法是获取滚动距离&#xff0c;动态添加position: fixed&#xff0c;但是会出现动态添加fixed会导致…

基于SpringBoot+Vue+uniapp的高校教务管理小程序系统设计和实现

2. 详细视频演示 文章底部名片&#xff0c;联系我获取更详细的演示视频 3. 论文参考 4. 项目运行截图 代码运行&#xff0c;效果展示图 代码运行&#xff0c;效果展示图 代码运行&#xff0c;效果展示图 代码运行&#xff0c;效果展示图 代码运行&#xff0c;效果展示图 5. 技…

探索MultiApp:一款强大的多应用管理工具

探索MultiApp&#xff1a;一款强大的多应用管理工具 在这个数字化时代&#xff0c;多任务并行已经成为我们日常生活的一部分。无论是工作还是娱乐&#xff0c;我们都需要频繁地在多个应用之间切换。今天&#xff0c;我要向大家介绍一款能够帮助你在同一设备上无缝切换和管理多…