Изменить длину загрузок (стрелки) на графике PCA с помощью ggplot2 / ggfortify?

Я боролся с масштабированием длины загрузок (стрелок) в PCA ggplot2 / ggfortify. Я много раз искал ответ на этот вопрос, и единственная найденная мною информация - это либо кодирование новых функций биплота, либо ссылки на другие совершенно разные пакеты для PCA (ggbiplot, factoextra), ни один из которых не отвечает на вопрос, на который я хотел бы ответить:

Можно ли масштабировать / изменять размер загрузок PCA в ggfortify?

Ниже приведен код для построения PCA с использованием стандартных функций R, а также код для построения PCA с использованием autoplot / ggfortify. На графике R вы заметите, что я могу масштабировать нагрузки, просто умножая их на скаляр (* 20 здесь), чтобы мои стрелки не сжимались в середине графика PCA. Используя автоплот ... не так уж и много. Что мне не хватает? При необходимости я перейду к другому пакету, но очень хотел бы лучше понять ggfortify.

На других сайтах, которые я обнаружил, границы осей графиков никогда не превышают +/- 2. Мой график равен +/- 20, а нагрузки устойчиво находятся около 0, предположительно в том же масштабе, что и графики с меньшими осями. Я все еще хотел бы построить PCA, используя ggplot2, но если ggfortify не сделает этого, мне нужно найти другой пакет, который будет.

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

Данные поступают из онлайн-файла из класса, который я посещаю, так что вы можете просто скопировать его, если у вас установлены пакеты ggplot2 и ggfortify. Графики ниже.

R сюжет, на который я хочу, чтобы ggplot выглядел

Как выглядит ggplot

Ответы на вопрос(1)

Ваш ответ на вопрос