R语言 | 使用ggplot绘制柱状图,在柱子中显示数值和显著性

原文链接:使用ggplot绘制柱状图,在柱子中显示数值和显著性

本期教程

获得本期教程示例数据,后台回复关键词:20240628。(PS:在社群中,可获得往期和未来教程所有数据和代码)

往期教程部分内容













写在前面

基于ggplot绘制柱状图,小技巧,很基础的图形。但是,越到后面,会发现,越是基础的图形,我们使用的频率越高。今天的教程是基于发芽指数来绘制,我们模拟一个发芽数和天数,计算出发芽指数。

代码

##'@在柱状图中显示数字
##'@2024.06.28
##'@
##'@小杜的生信笔记

library(ggplot2)
library(dplyr)
library(tidyr)
library(ggplot2)
library(agricolae)

setwd("D:\\BioinfoFile\\小杜的生信笔记\\2024\\20240628_柱状图中显示数据")
##'@此次数据基于种子发芽指数计算公式进行,数据具有随机性,不具有任何意义。
##'@加载数据
data <- read.csv("20240628_inputdata.csv",header = T)

data

相关计算代码

## 转换数据
long_data <- data %>%
  pivot_longer(cols = starts_with("germinated"), names_to = "replicate", values_to = "germinated")
long_data
##计算活力指数
germination_index <- long_data %>%
  group_by(treatment, day) %>%
  summarise(GI = sum(germinated / day)) %>%
  ungroup()

#'@计算各个处理的平均数和标准差
summary_gi <- germination_index %>%
  group_by(treatment) %>%
  summarise(mean_GI = mean(GI), sd_GI = sd(GI))

#'@单因素方差分析
anova_result <- aov(GI ~ treatment + day, data = germination_index)
summary(anova_result)

#'@进行Tukey HSD检验
tukey_result <- HSD.test(anova_result, "treatment", group = TRUE)
print(tukey_result)


# 提取 Tukey HSD 结果中的字母标记
groups <- tukey_result$groups
df_letters <- data.frame(sample = rownames(groups), letters = groups$groups)
##'@修改名称
colnames(df_letters) <- c("treatment","letters")

# 合并均值和字母标记
df_data <- merge(summary_gi, df_letters, by = "treatment")

绘图

ggplot(df_data, aes(x = treatment, y = mean_GI, fill = treatment)) +
  geom_bar(stat = "identity", position = "dodge", color = "black", size = 0.5) +
  ##'@误差线
  geom_errorbar(aes(ymin = mean_GI - sd_GI, ymax = mean_GI + sd_GI), width = 0.15, ## 宽度
                size = 1  ##字体大小
                ) +
  ##'@显示数字
  geom_text(aes(x = treatment, y = mean_GI + sd_GI + 0.5,  ## “+0.5”显示的高度
                label = round(mean_GI, 2)),   ### "round(mean_GI, 2))",其中2,表示数字显示的小数点位数
            size = 5,
            color = 'black') +
  ##'@显示显著性
  geom_text(aes(x = treatment, y = mean_GI + sd_GI + 1.3, label = letters), size = 6, color = "red") +
  theme_bw()+
  scale_fill_manual(values = c("#1f78b4", "#ff7f00", "#4daf4a")) +
  labs(x = NULL, y = "Germination Index")+
  theme(#axis.line = element_line(size = 1),  ## 粗细
    text=element_text(#family = "sans",
      colour ="black",size = 10),
    axis.text.x = element_text(color = "black", size = 12),
    axis.text.y = element_text(color = "black",size = 11),
    axis.ticks = element_line(colour = "black"),
    strip.text = element_text(color = "black",size = 10),
    axis.title = element_text(color = "black",size = 12), ##坐标轴字体大小
    legend.position = "none",
    strip.background = element_blank()
  )

ggsave("20240608_柱状图-显示数字.pdf",width = 6, height = 4)

获得本期教程示例数据,后台回复关键词:20240628。(PS:在社群中,可获得往期和未来教程所有数据和代码)

若我们的教程对你有所帮助,请点赞+收藏+转发,这是对我们最大的支持。

往期部分文章

1. 最全WGCNA教程(替换数据即可出全部结果与图形)


2. 精美图形绘制教程

3. 转录组分析教程

4. 转录组下游分析

小杜的生信筆記 ,主要发表或收录生物信息学教程,以及基于R分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
R语言使用ggplot2包可以绘制堆积柱状图。堆积柱状图可以用于比较多个类别在不同组之间的占比或数量。下面是使用ggplot2包绘制堆积柱状图的基本步骤: 首先,导入ggplot2包,并准备好要用于绘图的数据。数据应该为长格式(长格式数据是指每行代表一个观察值,每列对应一个变量)。确保数据有多个类别变量以及分组变量。 接下来,使用ggplot()函数创建一个空的绘图对象。指定数据源以及要使用的x和y变量。 然后,使用geom_bar()函数添加柱状图的图层。设置stat参数为"identity"来保持堆积柱状图的原始值。使用fill参数来指定填充颜色变量,这将决定不同类别的颜色。 最后,可以使用scale_fill_manual()函数手动设置颜色,也可以使用labs()函数添加标题和标签等。 绘图代码的示例: ```R library(ggplot2) # 准备数据 # 假设有一个数据框df,包含类别变量category,分组变量group以及对应的数值value # 例如,可以通过下面的代码创建一个示例数据 df <- data.frame(category = rep(c("A", "B", "C"), each = 3), group = rep(c("Group 1", "Group 2", "Group 3"), 3), value = c(10, 15, 20, 8, 12, 16, 5, 7, 9)) # 创建绘图对象 ggplot(data = df, aes(x = group, y = value, fill = category)) + # 添加堆积柱状图 geom_bar(stat = "identity") + # 设置颜色 scale_fill_manual(values = c("#F8766D", "#00BFC4", "#C77CFF")) + # 添加标题和标签 labs(title = "堆积柱状图", x = "分组", y = "数值") ``` 这段代码将绘制一个堆积柱状图,x轴为分组变量,y轴为数值变量,不同类别的柱状块使用不同的颜色进行填充。可以通过设置颜色值来自定义颜色,也可以根据需要添加其他图层或修改参数来进一步定制绘图的样式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杜的生信筆記

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值