2016-10-24 55 views
1

我希望能夠調整裝載標籤的位置,使它們不會落在箭頭上。但是,我不知道需要進行哪些調整。 geom_text可以用來調整站點位置的位置,但是我找不到在str(g)中存儲矢量的位置。autoplot - 如何調整加載標籤?

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,但無法找到調整標籤位置的任何提及。獎勵點數,如果它可以根據箭頭的矢量進行調整,但靜態調整是可以接受的。

目前,這裏是小區的樣子: An example of what the above code generates

回答

1

您可以通過layer_data(g, 2)獲取座標。但autoplot(prcomp.obj)將其他參數傳遞給ggbiplot(),因此您可以使用參數ggbiplot()(如loadings.label.hjust(請參見?ggbiplot))更改labelloadings.label位置。

示例代碼:
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()) 

enter image description here