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

85 篇文章 24 订阅

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

### 写在前面

#### 代码

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

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

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

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)


#### 往期部分文章

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

2. 精美图形绘制教程

3. 转录组分析教程

4. 转录组下游分析

• 3
点赞
• 5
收藏
觉得还不错? 一键收藏
• 打赏
• 0
评论
01-23 203

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

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20

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