我有三个变量a
,b
,c
。我想制作一个ggpairs
的{{1}}情节,其中a
和b
每个变量(在所有面板中)都由c
着色。我怎么能这样做?
library(ggplot2)
library(GGally)
N <- 100
a <- rnorm(N, 0, 1)
b <- rnorm(N, 0, 1)
point.colors <- runif(N, 0, 1)
ggpairs(data=data.frame(a, b)) # How to add point.colors here?
我可以很容易地使用base R来做到这一点:
plot(a, b, col=colorRampPalette(c('red', 'blue'))(N)[1+floor(N*point.colors)])
如何使用ggpairs
?
(编辑:off-by-one)
答案 0 :(得分:2)
为什么不在ggpairs对象中更改图?
p = ggpairs(data = data.frame(a,b))
p21 = qplot(a,b,colour = point.colors)
#next line didn't work for user
#p[2,1] = p21
p$plots[[3]] = p21
答案 1 :(得分:1)
现在,您可以通过将美学映射到特定情节
,在ggpairs
内完成此操作
ggpairs(data=data.frame(a, b, point.colors),
columns=c("a", "b"),
lower = list(continuous = "points", mapping=aes(color=point.colors)))
请注意,在这种情况下,您无需向数据框添加point.colors
,因为aes
调用会在全局环境中找到它(因此您也可以省略{{1}声明)。但是,包含它会感觉更加健壮。
PS鉴于您无法使用bouncys答案中提供的columns=
功能,您可能需要更新p[2,1] = p21
的版本。