很抱歉,如果这是一个愚蠢的问题,我仍然是R的新人。
我正在努力从数据框的两个不同列添加多个图层。这是我的剧本:
b <- rnorm(500, mean=300, sd=60)
c <- rnorm(500, mean=350, sd=15)
id <- rep(1:50, each=10)
visit <- rep(1:10, 50)
df <- data.frame(id, visit, b, c)
我想在x轴上创建一个访问图,在y轴上创建b和c。
ggplot(df, aes(x=visit, y=b)) +
geom_jitter(color="blue") +
geom_jitter(y=c, color="red")
然而,这不起作用。我知道当我有两个不同的数据帧和相同的列名时,这确实有效。这是我向图表添加b和c的唯一方法吗?或者还有另一种方式吗?
答案 0 :(得分:2)
从一个数据时隙添加多个图层的正确方法是在每个图层中指定aes
:
ggplot(df) +
geom_jitter(aes(x=visit, y=b), color="blue") +
geom_jitter(aes(x=visit, y=c), color="red")
对于您的具体示例,执行此操作的最tidy
方法是执行@GGamba建议的操作,并创建一个将颜色作为分类变量的整洁数据框。
答案 1 :(得分:1)
如果您只有几个小组,则可以覆盖每个aes
中的geom
:
library(ggplot2)
ggplot(df,aes(x=visit,y=b)) +
geom_jitter(color="blue") +
geom_jitter(aes(y=c), color="red")
但是如果你需要概括,那么方法就是拥有一个“整洁”的数据框:
library(tidyr)
df %>%
gather(key, value, -id, -visit) %>%
ggplot() +
geom_jitter(aes(visit, value, color = key))
b <- rnorm(500,mean=300,sd=60)
c <- rnorm(500,mean=350,sd=15)
id <- rep(1:50,each=10)
visit <- rep(1:10,50)
df <- data.frame(id,visit,b,c)
由reprex package(v0.2.0)创建于2018-05-15。