如何解决Biplot R中特定点的文本标签
library('factoextra')
data('mtcars')
pca.cars <- PCA(mtcars)
gg <- factoextra::fviz_pca_biplot(X = pca.cars,# samples
fill.ind = mtcars$vs,col.ind = 'black',pointshape = 21,pointsize = 1.5,geom.ind = 'point',repel = T,geom.var = FALSE )
mtcars$brand <- row.names(mtcars)
在图gg
中,我想要在Valiant
中mtcars$brand
的点上有一个文本标签。
我已经尝试过这种方法,但这只能给我想要的点。但是我想要相同的图,但是在Valiant
点上有一个文本标签
gg$layers[[1]]$data <- dplyr::filter(gg$layers[[1]]$data,name == "Valiant")
gg$layers[[2]]$data <- dplyr::filter(gg$layers[[2]]$data,name == "Valiant")
谢谢!
解决方法
可以这样实现。除了通过gg$layers
提取坐标之外,您还可以
- 从
PCA()
的结果中获取它们。 - 将它们放入数据框
- 添加标签
- 添加一个
geom_text
图层以标记所需的点
library(factoextra)
library(FactoMineR)
library(dplyr)
library(ggplot2)
pca.cars <- PCA(mtcars,graph = FALSE)
gg <- factoextra::fviz_pca_biplot(X = pca.cars,# samples
fill.ind = mtcars$vs,col.ind = 'black',pointshape = 21,pointsize = 1.5,geom.ind = 'point',repel = T,geom.var = FALSE )
# Make df with PC coordinate for each obs
d <- as.data.frame(pca.cars$ind$coord)
d$brand <- row.names(mtcars)
gg +
geom_text(data = filter(d,brand == "Valiant"),aes(x = Dim.1,y = Dim.2,label = brand),hjust = -.1,vjust =-.1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。