Как я могу удалить стрелки из ggbiplot PCA в R, которые не значимы? - PullRequest
0 голосов
/ 28 февраля 2019

Итак, я пытаюсь создать ggbiplot PCA порядка добычи в рационе суточных и ночных хищников, но проблема в том, что функция ggbiplot автоматически создает стрелки для каждого заказа.Есть только около 8 порядков, которые важны для моего исследования (т. Е. Имеют значение в ПК1 и ПК2, которое больше или равно 0,1).

Вот как ggbiplot выглядит сейчас:

enter image description here
Мне также удалось успешно удалить все стрелки, используя функцию var.axes = FALSE, чтобы получить этот график:

enter image description here
Нопроблема в том, что из любого графика я не уверен, как удалить только часть стрелок, чтобы я мог просто оставить нужные мне 8, или добавить эти 8 обратно на график с нуля после удаления всехстрелки.

Редактировать: Я хочу, чтобы значения ПК для всех 38 ордеров по-прежнему учитывались в графике, я просто хочу удалить ненужные стрелки, пока не останется только 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 голосов
/ 01 марта 2019

Глядя на код здесь , похоже, что вы не можете.Ниже показан обрыв, в котором вы изменяете получившийся объект 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))

Создано в 2019-03-01 пакетом Представление (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...