r - 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)
在情节中,我想在 ingg
的点上有一个文本标签。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)
推荐阅读
- c# - Interop GetActiveObject("Word.Application") 无法识别打开的 Word 文档?
- sql - 使用行限制子句在 Oracle 查询中重复列
- azure-iot-edge - UpdateTwinAsync 失败
- database - 如何将全局地址存储在数据库中?
- cascade - 如何在 Hybris items.xml 中定义级联删除?
- azure-functions - 异步定时器触发函数
- javascript - 从 Backbone Js View 取消绑定事件,而不影响 DOM
- prestashop-1.7 - Prestashop 1.7 添加产品类型
- wpf - 带有按钮的 WPF 菜单项
- python-3.x - 连接熊猫数据帧的更多pythonic方法