【发布时间】:2017-05-17 12:49:50
【问题描述】:
我找不到以下两个问题的解决方案:
首先我试试这个:
library(tidyverse)
gg <- mtcars %>%
mutate(group=ifelse(gear==3,1,2)) %>%
ggplot(aes(x=carb, y=drat)) + geom_point(shape=group)
Error in layer(data = data, mapping = mapping, stat = stat, geom =
GeomPoint,:object 'group' not found
这显然是行不通的。但是使用类似.$group 的东西也不成功。值得注意的是,我必须从aes() 指定外部形状
第二个问题是这样的。我无法在管道中调用已保存的 ggplot (gg)。
gg <- mtcars %>%
mutate(group=ifelse(gear==3,1,2)) %>%
ggplot(aes(x=carb, y=drat)) + geom_point()
mtcars %>%
filter(vs == 0) %>%
gg + geom_point(aes(x=carb, y=drat), size = 4)
Error in gg(.) : could not find function "gg"
感谢您的帮助!
编辑
找了很久才找到解决办法here。必须在 {} 中设置完整的 ggplot 术语。
mtcars %>%
mutate(group=ifelse(gear==3,1,2)) %>% {
ggplot(.,aes(carb,drat)) +
geom_point(shape=.$group)}
【问题讨论】:
-
试试
geom_point(aes(shape=factor(group))),第二部分你需要{},就像mtcars %>% filter(vs == 0) %>% {gg + geom_point(data = ., aes(x=carb, y=drat), size = 4)}一样 -
在第一部分我需要这个
ggplot(mtcars, aes(x=carb, y=drat)) + geom_point(shape=ifelse(mtcars$gear==3,1,2))。为第二部分点赞! -
我以前从未见过
{}与ggplot的把戏。很好的解决方案 -
@docendodiscimus 如果必须在
aes()之外设置变量,则 ggplot 无法使用管道? -
我想知道为什么这个问题有两票赞成结束?