在ggbiplot中指定箭头(线段)的颜色,透明度和位置

时间:2014-09-23 12:29:29

标签: r ggplot2 ggbiplot

我正在创建一个具有高度多变量数据的PCA双标图。

是否有办法在ggbiplot中指定线段的颜色/透明度/位置?此命令的所有参数都不提供此选项。

我知道ggbiplot基于ggplot - 是否接受aes参数?或者可以在创建的绘图上使用一层颜色/透明度/位置来覆盖默认值?

具体来说,关于位置,如果可能的话,我想抖动线段(尽管使它们更透明可能已经解决了问题)。

R数据集' iris'适合用作我的脚本(有效)的例子:

#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

非常感谢 - 感谢任何帮助!

亲切的问候。

2 个答案:

答案 0 :(得分:6)

您似乎需要稍微更改ggbiplot功能。在控制台中键入ggbiplot,将代码复制到编辑器。在arglist的{​​{1}}中,为箭头的颜色,线型和透明度(“alpha”)添加“name = expression”术语。

function

然后搜索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_segmentcolorlinetype添加参数:

alpha

将编辑过的功能分配给新名称,例如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

enter image description here

答案 1 :(得分: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"))

以及你的其他论点。