2014-09-23 194 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")) 
与其他参数一起