如何在ggbiplot的PCA图中修改图例形状并调整轴标签
ggbiplot绘制PCA图的需求解决:物种配色+自定义符号、轴标签优化
需求说明
- 不同物种(species)对应不同颜色,同一物种下的不同生物(organism)使用不同符号
- 将轴标签从默认的“PC1(x % explained var.)”格式修改为“PC1( x %)”
修正后的完整代码
setwd("~/Schwarze Johannisbeeren/SJ Wein mit nicht Sc/PCA/stackoverflow frage") results = read.csv("results.csv", sep = ";", encoding = "UTF-8", header=TRUE, check.names=FALSE) # 执行PCA分析 results.pca <- prcomp(results[,c(3:7)], center = TRUE, scale. = TRUE) # 提取主成分解释率,转为百分比并保留1位小数 pc_var <- round(summary(results.pca)$importance[2, ] * 100, 1) library(ggplot2) library(ggbiplot) ggbiplot(results.pca, alpha=0, obs.scale = 1, var.scale = 1, ellipse = TRUE, ellipse.prob=0.68, circle = F, varname.size=0, var.axes = F, groups=results$species) + theme_bw()+ # 映射颜色到物种、形状到单个生物 geom_point(aes(colour = species, shape = organism), size=2)+ # 自定义每个生物对应的点符号 scale_shape_manual(values = c("Mt1"=1, "Mt2"=2, "Al1"=1, "Al2"=2, "Bg1"=1, "Bg2"=2, "Bg3"=3, "Cs1"=1, "Cs2"=2, "Cs3"=3, "Df1"=1, "Df2"=2, "Df3"=3))+ # 物种配色方案(可根据需求调整palette) scale_color_brewer(name = "物种", type = "qual", palette = 2)+ # 自定义轴标签格式 labs(x = paste0("PC1 (", pc_var[1], "%)"), y = paste0("PC2 (", pc_var[2], "%)"), shape = "生物")+ # 保留原有的主题样式设置 theme(axis.text.x = element_text(size = 12, colour = "black", vjust = 0.5, hjust = 1, face= "bold"), axis.title.y = element_text(size = 12, face = "bold"), axis.title.x = element_text(size = 12, face = "bold"), axis.text.y = element_text(colour = "black", size = 12, face = "bold"))
修改关键点解析
1. 物种与生物的视觉区分
- 核心是在
geom_point的aes中同时绑定colour到species、shape到organism,实现颜色按物种分组、符号按单个生物区分 - 保留你原有的
scale_shape_manual配置,确保每个organism对应指定符号 - 启用
scale_color_brewer并设置图例名称,让颜色分组更直观
2. 轴标签格式调整
- 通过
summary(results.pca)$importance提取主成分的解释率,转换为百分比格式 - 使用
labs()函数直接替换轴标题,生成你需要的“PC1( x %)”格式,去除默认标签中的冗余文本
内容的提问来源于stack exchange,提问作者Scio
相关产品推荐
相关产品推荐

