为按一个离散因子分组的 ecdf 图着色,以使用不同(连续)因子连续着色?

Color an ecdf plot that is grouped by one discrete factor, to be colored continuously using a different (continues) factor?

我正在尝试制作一个 ecdf 图(经验累积分布函数),每个主题都有不同颜色的图(本例中为 'A'、'B' 或 'C') . 在此示例中,X 轴描述了 RT(响应时间),Y 轴描述了 rt 观察值的累积比例。 使用 ggplot2 和 ecdf 函数,我设法为每个主题绘制了不同的离散颜色的 ecdf 图。当我想根据一个完全不同的变量连续为主题的情节着色时,问题就开始了,这里称为 'color_factor',每个主题都不同并且是连续的。

这是我的简化示例:

set.seed(125)
dat <- data.frame(
  subject = c(rep(c("A"), 10), rep(c("B"), 10), rep(c("C"), 10)),
  color_factor = c(rep(0.3, 10), rep(0.6,10), rep(0.9,10)),
  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, aes(rt, ecdf, colour = color_factor)) + geom_line()

初始数据如下所示:

Plot p 效果很好,看起来像这样:

但是当我尝试使用 color_factor 变量为图着色时,它只为所有主题绘制了一个图,并且没有按预期着色。

我打算做的是图表看起来像图表 p,除了绘图颜色,例如颜色如下:主题 A- 浅蓝色、主题 B- 蓝色和主题 C - 深蓝色,对应每个受试者的 color_factor 变量。

有人知道我能做什么吗?任何帮助将不胜感激!

非常感谢,

尤瓦尔

尝试以下任一选项:

library(plyr)
library(ggplot2)
#Data
set.seed(125)
dat <- data.frame(
  subject = c(rep(c("A"), 10), rep(c("B"), 10), rep(c("C"), 10)),
  color_factor = c(rep(0.3, 10), rep(0.6,10), rep(0.9,10)),
  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, aes(rt, ecdf, colour = factor(color_factor),group=subject)) + geom_line()+
  scale_color_manual(values = c('lightblue','blue','darkblue'))+
  labs(color='Factor')

输出:

或者这样:

#Plot 3
ggplot( dat.ecdf, aes(rt, ecdf, colour = subject,group=subject)) + geom_line()+
  scale_color_manual(values = c('lightblue','blue','darkblue'))+
  labs(color='Subject')

输出:

@Lime 提供的答案完全符合我的要求:

p <- ggplot( dat.ecdf, aes(rt, ecdf, group = subject, colour = color_factor)) + geom_line()

这会根据每个主题的 'color_factor' 值为每个主题的情节着色: