R :试验设计示意图(第二版)
# 加载ggplot2包
library(ggplot2)
# 自定义文字大小
axis_title_size <- 18
axis_text_size <- 12
label_text_size <- 3.8
title_size <- 18
facet_label_size <- 14
legend_text_size <- 14 # 调整图例文本大小
legend_key_size <- unit(1, "cm") # 调整图例键大小
# 自定义框的高度
tile_height <- 0.6
# 自定义分面间距
facet_spacing <- unit(0.3, "cm")
# 创建数据框
sites <- c("Site 1", "Site 2", "Site 3")
weeks <- c("Week 4", "Week 6", "Week 8", "Week 10")
materials <- c("B73", "Mo17")
df <- expand.grid(site = sites, time = weeks, material = materials, replicate = c("Rep 1", "Rep 2", "Rep 3"))
# 创建新标签映射
label_map <- function(site, week, material) {
site_number <- gsub("Site ", "", site)
week_number <- gsub("Week ", "", week)
material_letter <- ifelse(material == "B73", "B", "M")
paste0(material_letter, site_number, "W", week_number)
}
# 将映射应用到数据框,生成新的标签列
df$label <- mapply(label_map, df$site, df$time, df$material)
# 绘制图形
p <- ggplot(df, aes(x = interaction(time, material, sep = "-", lex.order = TRUE), y = replicate)) +
geom_tile(aes(fill = material), color = "white", width = 0.9, height = tile_height) +
geom_text(aes(label = label), color = "black", size = label_text_size, vjust = 0.5, hjust = 0.5) +
scale_fill_manual(values = c("B73" = "#00BFFF", "Mo17" = "#FF4500")) +
facet_wrap(~ site, ncol = 1, scales = "free_y") +
labs(title = "Field situation diagram", x = "Growth Stage", fill = "Variety") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = axis_text_size),
axis.text.y = element_text(size = axis_text_size),
axis.title.x = element_text(size = axis_title_size),
axis.title.y = element_text(size = axis_title_size),
plot.title = element_text(size = title_size, hjust = 0.5),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
strip.text = element_text(size = facet_label_size),
panel.spacing = facet_spacing,
legend.text = element_text(size = legend_text_size),
legend.key.size = legend_key_size)
# 打印图形
print(p)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!