如何从R中PCA的ggbiplot中删除不重要的箭头?

时间:2019-02-28 15:38:38

标签: r pca ggbiplot

因此,我正尝试在昼夜和猛禽的饮食中创建ggbiplot猎物PCA,但是问题是ggbiplot函数会自动为每个订单创建箭头。对于我的研究而言,只有大约8个重要订单(即PC1和PC2中的值大于或等于0.1)。

ggbiplot现在的样子:

enter image description here
我还能够使用var.axes = FALSE函数成功删除所有箭头以获取此图:

enter image description here
但是问题是,从任一图上,我不确定如何只删除一部分箭头,以便只保留所需的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的箭头。我将如何删除这些并保留其他两个?

1 个答案:

答案 0 :(得分:0)

看代码here,看起来好像不行。如下图所示,您可以在其中改变生成的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 package(v0.2.1)于2019-03-01创建