Länge der Ladungen (Pfeile) im PCA-Diagramm mit ggplot2 / ggfortify ändern?

Ich habe Probleme mit der Neuskalierung der Länge der Ladungen (Pfeile) in einem ggplot2 / ggfortify-PCA. Ich habe mich intensiv umgesehen, um eine Antwort darauf zu finden, und als einzige Information habe ich entweder neue Biplot-Funktionen gefunden oder mich auf ganz andere Pakete für PCA (ggbiplot, factoextra) bezogen, von denen keines die Frage beantwortet, die ich beantworten möchte:

Ist es möglich, die Größe von PCA-Ladungen in ggfortify zu skalieren / zu ändern?

Below ist der Code, den ich zum Plotten einer PCA mithilfe von R-Funktionen verwenden muss, sowie der Code zum Plotten einer PCA mithilfe von Autoplot / ggfortify. Sie werden feststellen, dass ich die Lasten in den Standard-R-Diagrammen durch einfaches Multiplizieren mit einem Skalar (* 20 hier) skalieren kann, damit sich meine Pfeile nicht in der Mitte des PCA-Diagramms verkrampfen. Mit Autoplot ... nicht so sehr. Was vermisse ich? Ich werde bei Bedarf zu einem anderen Paket wechseln, möchte aber ggfortify wirklich besser verstehen.

An anderen Stellen, die ich gefunden habe, scheinen die Grenzen der Diagrammachsen +/- 2 nicht zu überschreiten. Mein Diagramm geht auf +/- 20 und die Belastungen liegen stabil nahe 0, vermutlich auf dem gleichen Maßstab wie Diagramme mit kleineren Achsen. Ich würde PCA immer noch gerne mit ggplot2 plotten, aber wenn ggfortify dies nicht tut, muss ich ein anderes Paket finden, das dies tut.

#load data geology rocks frame
georoc <- read.csv("http://people.ucsc.edu/~mclapham/earth125/data/georoc.csv")

#load libraries
library(ggplot2)
library(ggfortify)

geo.na <- na.omit(georoc) #remove NA values
geo_matrix <- as.matrix(geo.na[,3:29]) #create matrix of continuous data in data frame
pca.res <- prcomp(geo_matrix, scale = T) #perform PCA using correlation matrix (scale = T)
summary(pca.res) #return summary of PCA

#plotting in stock R
plot(pca.res$x, col = c("salmon","olivedrab","cadetblue3","purple")[geo.na$rock.type], pch = 16, cex = 0.2)
#make legend
legend("topleft", c("Andesite","Basalt","Dacite","Rhyolite"), 
       col = c("salmon","olivedrab","cadetblue3","purple"), pch = 16, bty = "n")
#add loadings and text
arrows(0, 0, pca.res$rotation[,1]*20, pca.res$rotation[,2]*20, length = 0.1)
text(pca.res$rotation[,1]*22, pca.res$rotation[,2]*22, rownames(pca.res$rotation), cex = 0.7)

#plotting PCA
autoplot(pca.res, data = geo.na, colour = "rock.type", #plot results, name using original data frame
         loadings = T, loadings.colour =  "black", loadings.label = T,
         loadings.label.colour = "black")

Die Daten stammen aus einer Online-Datei aus einer Klasse, die ich besuche. Sie können diese also einfach kopieren, wenn Sie die Pakete ggplot2 und ggfortify installiert haben. Grafiken unten.

R Handlung von was ich will, dass ggplot wie @ aussie

Was ggplot sieht eigentlich aus wie

Antworten auf die Frage(2)

Ihre Antwort auf die Frage