You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:32:36