如何在ropls包的PLS分析中更改得分图的颜色?
在R语言ropls包的PLS分析中修改得分图颜色的方法
ropls包的plot()函数提供了两个核心参数来控制得分图的颜色,可根据数据类型(连续/分类)选择不同方式:
1. 针对连续型响应变量(如示例中的BMI)
当y是连续变量时,parPaletteVc参数可传入颜色向量,生成对应变量数值高低的渐变配色:
library(ropls) data(sacurine) # 拟合PLS模型(y为连续的BMI) sacurine.pls <- opls(x = sacurine$dataMatrix, y = sacurine$sampleMetadata[, 'bmi'], orthoI = 0) # 用红-白-蓝渐变配色绘制得分图 plot(sacurine.pls, typeVc = "x-score", parPaletteVc = c("red", "white", "blue"))
你可以替换颜色向量为任意需要的渐变区间,比如c("#2E86AB", "#F2F2F2", "#D83A56")来使用自定义冷暖渐变。
2. 针对分类型响应变量(如分组样本)
如果y是分类变量(如性别、组别),有两种设置颜色的方式:
方法1:用parPaletteVc指定分组配色
直接传入与分组数量匹配的颜色向量,函数会按分组顺序自动分配颜色:
# 拟合以性别为响应变量的PLS模型 sacurine.pls.group <- opls(x = sacurine$dataMatrix, y = sacurine$sampleMetadata[, 'gender'], orthoI = 0) # 给男女两组分别设置珊瑚色和蓝绿色 plot(sacurine.pls.group, typeVc = "x-score", parPaletteVc = c("#FF6B6B", "#4ECDC4"))
方法2:用parColVc手动指定每个样本的颜色
若需要更精细的控制(比如部分样本单独着色),可生成与样本数量一致的颜色向量,通过parColVc传入:
# 根据性别生成每个样本的颜色向量 gender_col <- ifelse(sacurine$sampleMetadata[, 'gender'] == "Male", "#FF6B6B", "#4ECDC4") # 绘制得分图 plot(sacurine.pls.group, typeVc = "x-score", parColVc = gender_col)
额外提示
- 颜色支持多种格式:内置颜色名称(如"red")、十六进制颜色码(推荐,颜色更精准)、R内置调色板(如
rainbow(3)、viridis::viridis(5))。 parColVc的优先级高于parPaletteVc,若同时设置,会以parColVc的颜色为准。
内容的提问来源于stack exchange,提问作者m-peter
相关产品推荐
相关产品推荐

