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

问题描述

我正在尝试为每个主题(在此示例中为“ 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()

初始数据如下:

图p很好用,看起来像这样:

但是,当我尝试使用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'))

输出:

enter image description here

或者这个:

#Plot 2
ggplot( dat.ecdf,colour = factor(color_factor),group=subject)) + geom_line()+
  scale_color_manual(values = c('lightblue','darkblue'))+
  labs(color='Factor')

输出:

enter image description here

或者这个:

#Plot 3
ggplot( dat.ecdf,'darkblue'))+
  labs(color='Subject')

输出:

enter image description here

,

以下是@Lime提供的完全符合我想要的答案:

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

这将为每个主题的图上色以使其“ color_factor”值合适:

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...