问题描述
我正在尝试为每个主题(在此示例中为“ A”,“ B”或“ C”)制作具有不同颜色图的ecdf图(经验累积分布函数)。 在此示例中,X轴描述了RT(响应时间),Y轴描述了rt观测值的累积比例。 通过使用ggplot2和ecdf函数,我设法以不同的离散颜色为每个主题绘制了每个主题的ecdf图。当我想基于完全不同的变量(这里称为“ color_factor”)连续给对象的图连续着色时,问题就开始了。该变量对于每个对象都是不同的并且是连续的。
这是我的简化示例:
set.seed(125)
dat <- data.frame(
subject = c(rep(c("A"),10),rep(c("B"),rep(c("C"),10)),color_factor = c(rep(0.3,rep(0.6,rep(0.9,rt = sample(1:50,30,replace =T)
)
dat <- arrange(dat,color_factor,rt)
dat.ecdf <- ddply(dat,.(color_factor),transform,ecdf=ecdf(rt)(rt) )
p <- ggplot( dat.ecdf,aes(rt,ecdf,colour = subject)) + geom_line()
p2 <- ggplot( dat.ecdf,colour = color_factor)) + geom_line()
初始数据如下:
但是,当我尝试使用color_factor变量为绘图着色时,它只会为所有主题绘制一个绘图,而没有按预期方式为其着色。
我打算做的是该图将看起来与图p相似,但绘图颜色除外,例如将其着色为:主题A-浅蓝色,主题B-蓝色和主题C-深色。蓝色,对应于每个主题的color_factor变量。
任何人都知道我该怎么办?任何帮助将不胜感激!
非常感谢
Yuval
解决方法
尝试以下任一选项:
library(plyr)
library(ggplot2)
#Data
set.seed(125)
dat <- data.frame(
subject = c(rep(c("A"),10),rep(c("B"),rep(c("C"),10)),color_factor = c(rep(0.3,rep(0.6,rep(0.9,rt = sample(1:50,30,replace =T)
)
#Transform
dat <- arrange(dat,color_factor,rt)
dat.ecdf <- ddply(dat,.(color_factor),transform,ecdf=ecdf(rt)(rt) )
#Plot 1
ggplot( dat.ecdf,aes(rt,ecdf,colour = subject,group=1)) + geom_line()+
scale_color_manual(values = c('lightblue','blue','darkblue'))
输出:
或者这个:
#Plot 2
ggplot( dat.ecdf,colour = factor(color_factor),group=subject)) + geom_line()+
scale_color_manual(values = c('lightblue','darkblue'))+
labs(color='Factor')
输出:
或者这个:
#Plot 3
ggplot( dat.ecdf,'darkblue'))+
labs(color='Subject')
输出:
,以下是@Lime提供的完全符合我想要的答案:
p <- ggplot( dat.ecdf,group = subject,colour = color_factor)) + geom_line()