Автоплот - Как настроить загрузку меток?

Я хотел бы иметь возможность регулировать положение загрузочных ярлыков, чтобы они не падали на стрелки. Тем не менее, я не знаю, где корректировки должны быть сделаны. geom_text может использоваться для настройки положения позиций сайта, но я не могу найти, где хранятся векторы str(g),

library(ggplot2)
library(ggfortify)
df <- data.frame(replicate(10,sample(-10:10,10,rep=TRUE)))
names(df) <- c('up','down','left','right','circle','square','triangle','x','r1','l1')
rownames(df) <- paste('Dummy Site', seq(0,9,1))
g <- autoplot(prcomp(df[,-11], scale=TRUE), data=df,
              loadings.label=TRUE, loadings=TRUE, 
              loadings.label.size=8, loadings.colour='blue',
              label.size=5) +
     geom_text(vjust=-1, label=rownames(df)) +
     theme(plot.background=element_blank(),
           panel.background=element_rect(fill='transparent',color='black',size=1),
           legend.text=element_text(hjust=1),
           legend.key=element_blank()) 
g

Я смотрел в ggplot2::theme и я изучил справочные документы для autoplot, но не могу найти упоминания о регулировочной позиции этикетки. Бонусные баллы, если он может корректироваться на основе вектора стрелки, но статическая корректировка будет приемлемой.

В настоящее время вот как выглядит сюжет: Пример того, что генерирует приведенный выше код

1 ответ

Решение

Вы можете получить координаты по layer_data(g, 2), Но autoplot(prcomp.obj) передает другие аргументы ggbiplot(), так что вы можете изменить label а также loadings.label положение с использованием аргументов ggbiplot(), такие как loadings.label.hjust (увидеть ?ggbiplot).

пример кода:
arrow_ends <- layer_data(g, 2)[,c(2,4)]

autoplot(prcomp(df[,-11], scale=TRUE), data=df,
         loadings.label=TRUE, loadings=TRUE, 
         loadings.label.size=8, loadings.colour='blue',
         label.size=5, loadings.label.vjust = 1.2) +     # change loadings.label position
     geom_point(data = arrow_ends, aes(xend, yend), size = 3) +  # the coordinates from layer_data(...)
     geom_text(vjust=-1, label=rownames(df)) +
     theme(plot.background=element_blank(),
           panel.background=element_rect(fill='transparent',color='black',size=1),
           legend.text=element_text(hjust=1),
           legend.key=element_blank()) 

Другие вопросы по тегам