R语言中基于不同定性变量自定义PCA散点的颜色与形状
解决方案
要实现分别用Fraction控制散点颜色、Landuse控制散点形状,需要调整fviz_pca_biplot的参数,避免使用habillage(该参数会将颜色和形状绑定到同一个变量),而是单独指定颜色和形状的映射变量,再手动设置对应的样式值。
修改后的完整代码:
fviz_pca_biplot(SXR_PCA, label = "var", col.ind = SXR_input$Fraction, # 颜色由Fraction变量决定 shape = SXR_input$Landuse, # 形状由Landuse变量决定 col.var = "black", addEllipses = TRUE, ellipse.type = "norm", legend.title = list(color = "Fraction", shape = "Landuse"), # 分别设置两个图例的标题 mean.point = FALSE, ggtheme = theme_classic()) + ggtitle("") + scale_color_manual(values = c("#782ED1","#D1782E","#2ED178")) + scale_shape_manual(values = c(15, 16, 17)) # 对应Landuse类别的形状,数量要和类别数匹配
关键修改说明:
- 移除原代码中的
habillage = SXR_input$Fraction,该参数会强制颜色和形状绑定到同一变量,无法分开控制。 - 用
col.ind指定散点颜色的分组变量为Fraction,shape指定散点形状的分组变量为Landuse。 - 添加
scale_shape_manual手动设置Landuse每个类别对应的点形状:- 可通过输入
?pch查看R中所有可用的点形状代码,根据Landuse的类别数量调整values的元素个数(比如有4个类别就写4个形状代码)。
- 可通过输入
- 图例标题通过
legend.title的列表格式分别设置颜色和形状图例的标题,让图例更清晰。
内容的提问来源于stack exchange,提问作者MegBar97
相关产品推荐
相关产品推荐

