如何在R的ggplot中用中位数线与IQR替换散点并移除灰色背景
解决方案
修改后的完整代码
# 加载所需库 library(readxl) library(ggplot2) library(dplyr) # 读取Excel数据 data <- read_excel("cfu calculator.xlsx") # 一次性计算每组每日的中位数、四分位数(用于IQR) summary_data <- data %>% group_by(DAY, Group) %>% summarize( median_cfu = median(CFU), q1 = quantile(CFU, probs = 0.25), q3 = quantile(CFU, probs = 0.75), .groups = "drop" # 取消分组,避免后续ggplot警告 ) # 绘制带中位数线条和IQR误差棒的图,移除灰色背景 ggplot(summary_data, aes(x = DAY, y = median_cfu, color = Group)) + geom_line(linewidth = 1) + # 画中位数线条 geom_errorbar(aes(ymin = q1, ymax = q3), width = 0.2) + # 画IQR误差棒 xlab("天数") + ylab("CFU") + ggtitle("感染组与未感染组CFU随时间变化") + scale_color_discrete(name = "组别", labels = c("感染组", "未感染组")) + theme_classic() # 移除灰色背景,使用经典主题
关键修改说明
- 合并统计计算:把原来分开的中位数和IQR计算合并成一个
dplyr流程,减少冗余代码,同时添加.groups = "drop"避免分组残留导致的ggplot警告。 - 替换散点为中位数线条+IQR:用
geom_line()绘制各组中位数随时间的变化线条,geom_errorbar()展示IQR范围(Q1到Q3),width参数控制误差棒的横向宽度,让图更美观。 - 移除灰色背景:使用
theme_classic()直接切换到无灰色背景的经典主题,也可以用theme(panel.background = element_blank(), axis.line = element_line(color = "black"))手动设置背景为空,保留坐标轴线条。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

