Построение биплота PCA с автоплотом: измените толщину стрелки - PullRequest
0 голосов
/ 04 октября 2018

Я использую функцию autoplot из ggfortify, как показано кодом ниже, используя iris.pca.В этом примере только три переменные (следовательно, 3 загрузки), но в моем наборе данных намного больше переменных, поэтому я хотел бы уменьшить размер стрелок, чтобы сделать график более читабельным.Я думаю, что размер по умолчанию составляет 1 пункт, и я хотел бы уменьшить его до 0,5.Хотя есть аргументы для изменения цвета загрузок и размера этикетки, я не смог найти способ отрегулировать толщину стрелок.Кто-нибудь знает, как это сделать?

library(ggplot2)
library(ggfortify)

df <- iris[c(1, 2, 3, 4)]
iris.pca<-(prcomp(df))

autoplot(iris.pca, data=iris, colour="Species", loadings=TRUE, loadings.colour = "black")+
  scale_colour_manual(values=c("forestgreen","red","blue"))+
  scale_fill_manual(values=c("forestgreen","red","blue"))+
  scale_shape_manual(values=c(25,22,23))+
  theme_bw()

1 Ответ

0 голосов
/ 05 октября 2018

Проблема в том, что ggfortify уже создал объект ggplot2.Поэтому, если вы не хотите воссоздавать сюжет вручную (что было бы более чистым решением), вы должны изменить существующий сюжет следующим образом:

Старый код

library(ggplot2)
library(ggfortify)

df <- iris[c(1, 2, 3, 4)]
iris.pca<-(prcomp(df))

d <- autoplot(iris.pca, data=iris, colour="Species", loadings=TRUE, loadings.colour = "black", scale = 1)+
  scale_colour_manual(values=c("forestgreen","red","blue")) +
  scale_fill_manual(values=c("forestgreen","red","blue")) +
  scale_shape_manual(values=c(25,22,23))+
  theme_bw()

Модификации

d$layers[[2]]$aes_params$size <- 0.5
d$layers[[2]]$geom_params$arrow$length <- unit(6, units = "points")
d

Это, по сути, вручную создает эстетику размера для линий стрелок и сужает острые концы стрелок: Resulting Plot

...