r - 如何从 R 中 PCA 的 ggbiplot 中删除不重要的箭头?
问题描述
所以,我试图ggbiplot
在昼夜猛禽的饮食中创建一个猎物顺序的 PCA,但问题是该ggbiplot
函数会自动为每个顺序创建箭头。只有大约 8 个订单对我的研究很重要(即,PC1 和 PC2 中的值大于或等于 0.1)。
这是现在的ggbiplot
样子:
我还能够使用该var.axes = FALSE
函数成功删除所有箭头以获取此图:
但问题是,无论从哪一个图中,我都不确定如何只删除一部分箭头,这样我就可以保留我需要的 8 个箭头,或者在我删除所有箭头后从头开始将这 8 个添加回图中的箭头。
编辑:我希望所有 38 个订单的 PC 值仍被计入图中,我只想删除不必要的箭头,直到只剩下 8 个。
可重现的例子:
#load iris data
iris$Species = NULL # (to run the PCA)
iris_pca = prcomp(iris)
ggbiplot(iris_pca) + theme_classic()
所以,假设我不想包含 Sepal.Width 或 Petal.Width 的箭头。我将如何删除这些并保留另外两个?
解决方案
看这里的代码,好像不行。如下所示,您可以在其中更改生成的ggplot2
对象。
# Load library
library(ggbiplot)
#> Loading required package: ggplot2
#> Loading required package: plyr
#> Loading required package: scales
#> Loading required package: grid
# Remove species
iris$Species <- NULL
# Perform PCA
iris_pca <- prcomp(iris)
# Create ggbiplot
g <- ggbiplot(iris_pca) + theme_classic()
# Before plot
plot(g)
# Get ggplot2 object
g <- ggplot_build(g)
# Remove unwanted arrows & labels, say, Petal.Length Petal.Width
g$data[[1]] <- g$data[[1]][-(3:4), ]
g$data[[3]] <- g$data[[3]][-(3:4), ]
# Repackage & plot
plot(ggplot_gtable(g))
由reprex 包(v0.2.1)于 2019 年 3 月 1 日创建
推荐阅读
- php - 如何将分页从“每页”更改为只有第一页和最后一页?
- java - 在java compareTo中通过多种方法进行比较?
- swift - 更新可编码的用户结构
- json - Kubernetes:拉取镜像失败。服务器向 HTTPS 客户端提供 HTTP 响应
- oracle - 为 Sql 语句使用 Sql Baseline
- .net - 如何在 WCF 服务上使用 HealthChecksUI
- java - 如何将字符串添加到 javafx ListView?
- javascript - 每当在javascript中单击时查找列表元素的索引
- unity3d - 在Unity中按住按钮时如何使按钮工作
- asp.net - 在 iFrame 中维护会话状态