R :试验设计示意图

发布时间 2023-11-01 15:48:08作者: 王哲MGG_AI
# 加载ggplot2包
library(ggplot2)

# 自定义文字大小
axis_title_size <- 18
axis_text_size <- 12
label_text_size <- 6
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")  # 2cm为例,您可以根据需求调整

# 创建数据框
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"))

# 绘制图形
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 = material), 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 Period", 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)