杨树扦插生根天数累计个体统计及多培养基ggplot绘图求助
解决杨树幼苗生根累计统计与可视化问题
嘿,Camille!听起来你在杨树扦插生根数据的累计统计上遇到了小麻烦——别着急,用R的tidyverse工具链就能轻松搞定这个需求,我来一步步给你拆解:
第一步:数据预处理与累计统计
首先我们需要把原始数据整理成「按培养基分组,每天生根数+累计生根数」的格式。假设你的数据集叫root_data,结构是每行对应一个幼苗,包含media(培养基)和r_days(首次生根天数)两列。
先加载必备的工具包:
library(tidyverse) # 包含dplyr(数据处理)和ggplot2(可视化)
然后执行数据处理流程:
# 1. 统计每个培养基每天的生根个体数 # 2. 填充缺失天数(比如某一天没有幼苗生根,补0保证曲线连续) # 3. 计算累计生根数 cumulative_root_data <- root_data %>% count(media, r_days, name = "daily_rooted") %>% # 按培养基+天数计数 group_by(media) %>% complete(r_days = full_seq(r_days, 1), fill = list(daily_rooted = 0)) %>% # 补全所有天数 mutate(cumulative_total = cumsum(daily_rooted)) %>% # 计算累计值 ungroup()
这里的关键是complete()函数——它能帮你把某个培养基中没有生根记录的天数补全为0,避免累计曲线出现断层;cumsum()则会自动帮你累加每天的生根数,比如18天有2个个体生根时,累计数会直接加2,完美解决你的统计需求。
第二步:绘制累计生根曲线
有了处理好的累计数据,用ggplot2就能轻松画出四条对比曲线:
ggplot(cumulative_root_data, aes(x = r_days, y = cumulative_total, color = media)) + geom_line(linewidth = 1.2) + # 绘制曲线,调整线宽让线条更清晰 geom_point(size = 2.5) + # 加上数据点,方便查看具体天数的累计数 labs( x = "首次生根天数", y = "累计生根个体数量", color = "培养基类型", title = "不同培养基下杨树幼苗累计生根趋势" ) + theme_minimal() + # 选用简洁的主题 theme( plot.title = element_text(hjust = 0.5, size = 14, face = "bold"), axis.title = element_text(size = 12), legend.position = "top" # 把图例放在顶部,更美观 )
额外小提示
如果你的原始数据是宽格式(比如每列对应一个培养基,行是天数),可以先用pivot_longer()转成长格式再处理:
wide_data %>% pivot_longer(cols = -r_days, names_to = "media", values_to = "daily_rooted")
这样处理后,你就能得到直观的四条累计曲线,清晰对比四种培养基的生根速度差异啦。如果需要调整颜色、添加标注或者优化细节,随时再提问!
内容的提问来源于stack exchange,提问作者Camille_brnd
相关产品推荐
相关产品推荐

