R语言绘制柱状图(bar plot)

柱状图是在数据可视化过程中最为常见的图片形式之一,本文将借助R语言中的ggplot2这个包绘制常用的柱状图。在ggplot2包中主要是使用geom_bar()这个函数来绘制柱状图。该函数主要包括以下5个参数,我们可以通过输入?geom_bar命令来查看帮助文档。
在这里插入图片描述
stat:有identity、count和bin这三个参数。其中identity比较常用,表示直接引用数据集中的变量的值(默认为count)。

position:我的理解为调整柱状图的形式,有identity、fill、dodge这三种形式,下面将通过案例1对此进行详细讲解。

width:调整柱子的宽度。

color:调整柱子边框的颜色。

fill:调整柱子的填充颜色。

案例一:在这里插入代码片

使用ggplot2包里的“diamonds”数据集。diamonds数据集包含大约 54 000 颗钻石的信息,每颗钻石具有 price、carat、color、clarity 和 cut 变量。案例一将使用cut(切割质量)和clarity (钻石的纯净度)这两个变量。
1、调整参数position=“identity”,color = “white”

library(tidyverse) # 载入数据集和绘图包
ggplot(data = diamonds) +
  geom_bar(aes(x = cut, fill = clarity), 
           color = "white", position = "identity")

在这里插入图片描述
可以观察到当position=“identity”该图的形式为高度表示绝对数量的堆积柱状图,当color = “white”时边框变成了白色,当我们想改变柱子的填充颜色时,可以使用fill这个函数。
同时,我们也可以通过coord_flip()函数把柱子变成横向的。

coord_flip()

在这里插入图片描述
如果我们想通过clarify的不同把该图分为不同小块,可以通过facet_grid()函数来实现。


ggplot(data = diamonds) +
  geom_bar(aes(x = cut, fill = clarity), color = "white", position = "identity")+
  facet_grid(.~clarity)

在这里插入图片描述


ggplot(data = diamonds) +
  geom_bar(aes(x = cut, fill = clarity), color = "white", position = "identity")+
  facet_grid(clarity~cut)

从以上代码可以看出,facet_grid()2个变量间用“~”进行分隔,当只需要使用1个变量时,另一个变量使用“.”代替。当然,这个数据分块后的结果并不好看,在此只是借助该数据展示facet_grid()函数的用法与可实现的效果。

在这里插入图片描述

ggplot(data = diamonds) +  geom_bar(aes(x = cut, fill = clarity), position = "fill")

在这里插入图片描述
当position=“fill”时该图的形式为高度表示相对数量的百分比堆积柱状图,每个柱子的最大高度均为1。


ggplot(data = diamonds) +
  geom_bar(aes(x = cut, fill = clarity), position = "dodge")

当position=“dodge”时该图的形式为柱子高度表示绝对数量的分组柱状图。

案例二:

下面将通过案例二来绘制分组堆叠柱状图.

library(ggplot2)   # 用于绘图
library(ggalluvial) # 用于绘制柱状图背后的条带
ra <- as.matrix(read.table("abundance.txt", row.names =1, 
                           header = F, sep = "\t")) # 读入相对丰度数据并转换为矩阵方便后续数据整理

在这里插入图片描述
Note: 从左至右分组分别为JRZS0,JRZS2,NRZS0,NRZS2,XRZS0,XRZS2共6个分组。其中JR、NR、XR分别为3种不同品种的水稻:粳稻、糯稻、籼稻;ZS0和ZS2分别代表不施用基肥和施用2kg/亩的锌肥。


group <- c("JR", "NR","XR")  # 水稻品种变量
code <- c("JRZS0","JRZS2","NRZS0","NRZS2","XRZS0","XRZS2") # 6组处理变量
dat <- data.frame(code = rep(code,each = 7),
                  taxa = rep(rownames(ra), 6),
                  cultivar = rep(group, each = 14),
                  abundance = as.vector(ra)) # 按照ggplot绘图所需格式进行数据整理
dat$taxa <- factor(dat$taxa, levels = c("Actinobacteriota","Chloroflexi","Proteobacteria",
                                        "Acidobacteriota","Myxococcota","Desulfobacterota","Others"))
                                        #这个用于对各菌门数据进行排序
head(dat) # 查看整理好的数据前6行
 code             taxa cultivar  abundance
1 JRZS0 Actinobacteriota       JR 0.22722374
2 JRZS0      Chloroflexi       JR 0.22339743
3 JRZS0   Proteobacteria       JR 0.20567651
4 JRZS0  Acidobacteriota       JR 0.09652968
5 JRZS0      Myxococcota       JR 0.03646502
6 JRZS0 Desulfobacterota       JR 0.05270264

ggplot(dat, aes(x = code, y = abundance, fill = taxa))+
  geom_bar(stat = "identity", width = 0.7)+ # 柱状图绘制
  geom_flow(aes(alluvium = taxa), alpha = 0.5) + # 添加柱状图后的条带
  scale_fill_manual(values = c("#0068ad", "#8ac2df","#f8d9c5",
                               "#eca282","#c80321","#c9b1d5","#fcdaeb"))+
  theme_bw()+ # 将主题调整为白色背景和浅灰色网格线
  facet_grid(.~cultivar, scales = "free_x", space = "free_x")+ # 按照cultivar这个变量进行分块
  xlab("")+ # 去掉x轴的标题
  ylab("Relative abundance (%)")+ # 设置y轴的标签
  theme(panel.grid.major.x = element_blank(),
        axis.text.x = element_text(size = rel(1.2), angle = (-30)),
        axis.text.y = element_text(size=rel(1.2)),
        legend.text = element_text(size = rel(1))) # 更改x轴、y轴的字体大小、刻度线等
ggsave("Abundance.pdf", width = 6, height = 4) # 图片导出,导出为pdf文件,设置图片长和宽

在这里插入图片描述

  • 10
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于CSV文件使用ggplot2库绘制,您可以按照以下步骤操作: 1. 首先,您需要安装并加载ggplot2库。可以使用以下命令安装ggplot2: ```R install.packages("ggplot2") ``` 安装完毕后,可以使用以下命令加载ggplot2: ```R library(ggplot2) ``` 2. 接下来,您需要读取CSV文件中的数据。您可以使用`read.csv()`函数或`read.table()`函数来读取CSV文件。假设您的CSV文件名为"data.csv",并且包含一个名为"value"的列,您可以按照以下方式读取数据: ```R data <- read.csv("data.csv") ``` 3. 然后,您可以使用ggplot2库中的`ggplot()`函数创建一个绘对象,并指定数据源和要绘制的变量。例如,以下代码创建了一个基本的柱对象: ```R plot <- ggplot(data, aes(x = variable_name, y = value)) ``` 将"variable_name"替换为您CSV文件中的实际变量名称。 4. 接下来,您可以使用`geom_bar()`函数添加柱形层,并根据需要设置不同的参数。例如,以下代码添加了垂直柱层: ```R plot + geom_bar(stat = "identity") ``` 5. 最后,您可以根据需要自定义柱的外观,例如添加标题、标签、调整颜色等。以下是一个完整的示例代码,演示如何使用ggplot2绘制: ```R library(ggplot2) # 读取CSV文件 data <- read.csv("data.csv") # 创建绘对象 plot <- ggplot(data, aes(x = variable_name, y = value)) # 添加柱形plot + geom_bar(stat = "identity") + labs(title = "柱", x = "变量名称", y = "数值") ``` 请确保将"data.csv"替换为您实际的CSV文件路径,将"variable_name"替换为您要绘制的变量名称。 运行上述代码后,您将获得一个使用ggplot2库绘制的柱,并根据需要进行自定义。您可以根据ggplot2文档和在线资源进一步了解有关柱和ggplot2的更多选项和参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值