为按一个离散因子分组的 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' 值为每个主题的情节着色:
我正在尝试制作一个 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' 值为每个主题的情节着色: