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

如何按X数据集每3行手动设置PLS-DA图中点的颜色?

解决方案:按固定行数分组自定义PLS-DA散点颜色

mixOmics的plotIndiv函数的col参数并非只能接受分组因子,它可以直接接收长度与样本数一致的颜色向量,每个元素对应一个样本点的颜色。我们可以通过手动生成按每3行循环的颜色序列来实现你的需求。

示例代码(前6个点演示)

if(!require(mixOmics)) install.packages("mixOmics", repos = "http://cran.us.r-project.org")
suppressWarnings(library(mixOmics, verbose = FALSE))

data(iris)

# 取前6个样本演示(1-3蓝,4-6绿)
X <- iris[1:6, 1:4]  
Y <- iris$Species[1:6]  

# 生成按每3个样本循环的颜色向量
# 可自定义颜色列表,后续按需拓展
color_vec <- rep(c("blue", "green"), length.out = nrow(X))

# 执行PLS-DA
plsda <- plsda(X, Y, ncomp = 2)  

# 绘图时传入自定义颜色向量
plotIndiv(plsda, ind.names = FALSE, legend = TRUE,
          comp = c(1,2), ellipse = FALSE, pch = 16,
          title = "PLS-DA 按每3行分组着色",
          star = TRUE, 
          cex = 1.5,
          point.lwd = 1,
          X.label = 'LV1', Y.label = 'LV2',
          col = color_vec)  # 关键:传入自定义颜色向量

拓展说明

  • 如果需要更多颜色循环,只需在rep的第一个参数里添加颜色即可,比如rep(c("blue", "green", "red", "purple"), length.out = nrow(X)),会按每3个样本依次使用蓝、绿、红、紫循环。
  • 若不需要默认的分组图例,可将legend = FALSE,或者用legend参数自定义图例内容。
  • 要对全量数据着色,去掉X和Y的行索引限制即可,颜色向量会自动匹配所有样本数。

内容的提问来源于stack exchange,提问作者dkcongo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 11:48:17