Использование ggfortify и ggrepel для PCA

Я запускаю анализ основных компонентов с вращением варимакс и хочу отобразить график, который кажется достаточно простым, однако мои векторы нагрузки в некоторых местах очень близки, и метки того, какой фактор они имеют, имеют тенденцию перекрываться. Вот тут-то и появляется ggrepel, чтобы разделить ярлыки. Моя дилемма теперь выясняет, как соединить два. Я использовал автоматический график, который автоматически добавляет нужный текст, и это затрудняет определение того, какой текст отталкивать. Могут быть и другие способы сделать это, и я открыт для предложений. У меня есть код, который работает, но имеет перекрытие, и одна из моих попыток отразить код ниже.

autoplot(prcomp(built.df9),
loadings = TRUE, loadings.colour = 'blue', loadings.label = TRUE, 
loadings.label.size = 4, loading.label.color = 'red') +
ggtitle(label = "Principal Component Analysis and Varimax Rotation for Built 
Environment Indicators") +
geom_text_repel(aes(label = rownames(prcomp(built.df9))))

введите здесь описание изображения

autoplot(prcomp(built.df9),
loadings = TRUE, loadings.colour = 'blue', loadings.label = TRUE, 
loadings.label.size = 4, loading.label.color = 'red') +
ggtitle(label = "Principal Component Analysis and Varimax Rotation for Built 
Environment Indicators")

person E. Nicholson    schedule 23.06.2017    source источник


Ответы (2)


Вы можете использовать loadings.label.repel=T из пакета ggfortify.

В этом примере используется тот же код, только с набором данных mtcars.

Без отклоненных ярлыков:

library(ggplot2)
library(ggfortify)

autoplot(prcomp(mtcars),
         loadings = TRUE, loadings.colour = 'blue', loadings.label = TRUE, 
         loadings.label.size = 4, loading.label.color = 'red') +
  ggtitle(label = "Principal Component Analysis and Varimax Rotation for Built 
          Environment Indicators") 

введите описание изображения здесь

С отклоненными ярлыками:

autoplot(prcomp(mtcars),
         loadings = TRUE, loadings.colour = 'blue', loadings.label = TRUE, 
         loadings.label.size = 4, loading.label.color = 'red',loadings.label.repel=T) +
  ggtitle(label = "Principal Component Analysis and Varimax Rotation for Built 
          Environment Indicators") 

введите описание изображения здесь

person J.Con    schedule 29.06.2017
comment
Большое спасибо, J. Con, это сразу решило мою проблему! - person E. Nicholson; 30.06.2017

Вы не предоставили никаких данных, чтобы сделать это воспроизводимым, однако вам может повезти больше с пакетом ggbiplot.

library(ggbiplot)

data(mtcars)

standardised<-as.data.frame(scale(mtcars[2:ncol(mtcars)]))

mtcars.pca<-prcomp(standardised,retx=TRUE)

ggbiplot(mtcars.pca, obs.scale=1, var.scale=1,  ellipse=F, circle=F,labels.size = 4)

введите здесь описание изображения

person J.Con    schedule 24.06.2017
comment
Я попытался использовать ggbiplot, однако у меня запущена бета-версия R версии 3.4.1, и она недоступна. Когда я пытаюсь установить пакет, я получаю ответ: > install.packages("ggbiplot") Installing package into ‘C:/Users/efn1/R Library’ (as ‘lib’ is unspecified) Warning in install.packages : package ‘ggbiplot’ is not available (for R version 3.4.1 beta) - person E. Nicholson; 26.06.2017
comment
Хорошо. Можете ли вы предоставить вывод dput(built.df9) в своем вопросе, чтобы сделать это воспроизводимым? - person J.Con; 28.06.2017
comment
Я не могу поместить вывод, потому что вывод слишком велик, чтобы поместиться в пример. Прошу прощения за сложность воспроизведения, но мой набор данных довольно большой. - person E. Nicholson; 29.06.2017
comment
@E.Nicholson Пакет ggbiplot недоступен в CRAN. Таким образом, его нельзя установить с помощью install.packages("ggbiplot"). Вы должны использовать библиотеку devtools, например library(devtools) install_github("vqv/ggbiplot"). - person Bappa Das; 15.04.2020