2014-09-23 196 views
2

我正在創建具有高度多元數據的PCA雙線圖。在ggbiplot中指定箭頭(線段)的顏色,透明度和位置

是否有方法可以指定ggbiplot中線段的顏色/透明度/位置?這個命令的參數都沒有提供這個選項。

我知道ggbiplot是基於ggplot - 它可能接受aes參數嗎?或者可以在創建的圖上覆蓋一層顏色/透明度/位置來覆蓋默認值?

具體而言,關於位置,如果可能的話,我想抖動線段(雖然使它們更透明可能已經解決了問題)。

將R數據集「光圈」是適合用作一個例子我的腳本(工作):

#load required packages 
library(ggplot2) 
library(devtools) 
library(ggbiplot) 

#load dataset 
data(iris) 

#perform principal component analysis 
pca = prcomp(iris[ , 1:4], scale=T) 

#define classes, generate & view PCA biplot 
class = iris$Species 
pca_biplot = ggbiplot(pca,obs.scale = 1, var.scale=1,groups=class,circle=F,varname.size=1,varname.adjust=6) 
data_pca 

非常感謝 - 任何幫助表示讚賞!

親切的問候。

回答

4

看來你需要稍微改變ggbiplot函數。在控制檯中鍵入ggbiplot,將代碼複製到編輯器。在functionarglist中,爲箭頭的顏色,線型和透明度(「alpha」)添加「name = expression」項。

ggbiplot2 <- function (pcobj, choices = 1:2, scale = 1, pc.biplot = TRUE, 
      obs.scale = 1 - scale, var.scale = scale, groups = NULL, 
      ellipse = FALSE, ellipse.prob = 0.68, labels = NULL, labels.size = 3, 
      alpha = 1, var.axes = TRUE, circle = FALSE, circle.prob = 0.69, 
      varname.size = 3, varname.adjust = 1.5, varname.abbrev = FALSE, 
      color = muted("red"), # <- add new arguments to the function 
      linetype = "solid", 
      alpha_arrow = 1) 

然後搜索geom_segment部分,並添加論據colorlinetypealpha

g <- g + geom_segment(data = df.v, aes(x = 0, y = 0, xend = xvar, yend = yvar), 
         arrow = arrow(length = unit(1/2, "picas")), 
         color = color, linetype = linetype, alpha = alpha_arrow) 

分配編輯功能,以一個新的名字,例如ggbiplot2。試試吧,在這裏你的箭頭設置默認值以外的值:

ggbiplot2(pca, obs.scale = 1, var.scale = 1, groups = class, circle = F, varname.size = 1, varname.adjust = 6, 
color = "blue", linetype = "dashed", alpha_arrow = 0.5) # <- use the new arguments 

enter image description here

+0

非常感謝@Henrik,這是一個很大的幫助。我還添加了一個line.size參數來傳遞給size,因爲默認的箭頭寬度非常小。 – Bajcz 2017-04-12 13:45:20

2

謝謝您的建議。

我寫了該函數,以便它可以很容易地使用。您也可以指定選擇哪些列(=變量)以及分配給每個選定變量的顏色。到目前爲止,它只基於princomp(),因爲我還沒有使用PCA的其他函數。隨意作出貢獻:

https://github.com/EhrmannS/r-snippets/blob/master/graphics/ggplot/ggbiplot_more_graphics_options.R

只需指定:

g <- ggbiplot2(pcobj, 
       coi <- list(c("variables", "with", "first", "colour"), 
          c("variables", "with", "second", "colour")), 
       arrow.alpha = c(0.2, 1, 1), 
       arrow.color = c(muted("red"), "black", "red")) 
與其他參數一起