R语言FactoExtra包fviz_pca双分组映射与图例自定义方法
报错原因
你遇到的报错是因为fviz_pca_biplot的pointshape参数仅支持传入单个值设置统一的散点形状,不支持直接传入分组向量做美学映射,因此触发了长度不匹配的错误。
解决代码
你可以通过内置参数直接映射分组,再搭配ggplot的图例修改功能实现需求,完整可运行代码如下:
library(factoextra) library(FactoMineR) # 计算PCA res.pca <- PCA(Iris[,1:4], graph = F) # 绘制双标图,同时映射颜色和形状 fviz_pca_biplot(res.pca, # 个体点配置 geom.ind = "point", col.ind = Iris$Species, # 颜色映射到Species变量 shape.ind = Iris$Site, # 形状映射到Site变量 # 变量箭头配置 col.var = "steelblue") + # 自定义两个图例的标题 labs(color = "color", shape = "shape")
如果你的factoextra版本较低,shape.ind参数不生效,可以使用手动修改ggplot图层的兼容方案:
library(factoextra) library(FactoMineR) library(ggplot2) res.pca <- PCA(Iris[,1:4], graph = F) # 先绘制基础的颜色映射图 p <- fviz_pca_biplot(res.pca, geom.ind = "point", col.ind = Iris$Species, col.var = "steelblue") # 移除默认的固定形状参数,新增形状映射 p$layers[[1]]$aes_params$shape <- NULL p <- p + aes(shape = Iris$Site) + labs(color = "color", shape = "shape") print(p)
以上两种方案都可以实现散点颜色映射物种、形状映射Site,同时自定义图例标题的需求。
内容的提问来源于stack exchange,提问作者Jellz
相关产品推荐
相关产品推荐

