2017-06-23 2 views
2

Ich führe eine Hauptkomponentenanalyse mit einer Varimax-Rotation durch und möchte die Grafik anzeigen, die einfach genug erscheint, aber meine Ladevektoren sind an einigen Stellen sehr nah und die Etiketten von welchem ​​Faktor sie neigen überlappen. Hier kommt grepel ins Spiel, um die Etiketten zu trennen. Mein Dilemma ist jetzt herauszufinden, wie man die beiden verbindet. Ich habe das Auto-Plot verwendet, das automatisch den gewünschten Text hinzufügt und es schwierig macht, den abzuweisenden Text zu definieren. Es kann andere Wege geben und ich bin offen für Vorschläge. Ich habe meinen Code, der funktioniert, aber hat sich überschnitten und einer meiner Versuche, den Code unten abzuwehren.Mit ggfortify und ggrepel für pca

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)))) 

enter image description here

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") 

Antwort

1

können Sie loadings.label.repel=T vom ggfortify Paket verwenden.

In diesem Beispiel wird der gleiche Code verwendet, nur mit dem Datensatz mtcars.

Ohne abgestoßen Etiketten:

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") 

enter image description here

Mit abgestoßen Labels:

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") 

enter image description here

+1

Vielen Dank J. Con, löste es mein Problem sofort! –

0

Sie haben keine Daten, sofern dies reproduzierbar zu machen, aber Sie können mehr Glück mit dem Paket, 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) 

enter image description here

+0

Ich habe habe einen Versuch gemacht, den 'ggbiplot' zu benutzen, aber ich benutze R Version 3.4.1 beta und es ist nicht verfügbar. Wenn ich versuche, das Paket zu installieren, erhalte ich die Antwort: '> install.packages (" ggbiplot ") Installation des Pakets in 'C:/Users/efn1/R Library' (als 'lib' ist nicht spezifiziert) Warnung bei der Installation .packages: Paket 'ggbiplot' ist nicht verfügbar (für R Version 3.4.1 beta) ' –

+0

Okay. Können Sie die Ausgabe von 'dput (built.df9)' in Ihrer Frage bereitstellen, um dies reproduzierbar zu machen? –

+0

Ich kann den dput nicht setzen, weil die Ausgabe zu groß ist, um in das Beispiel zu passen. Ich entschuldige mich für die Schwierigkeit zu reproduzieren, aber mein Datensatz ist ziemlich groß. –