【问题标题】:Color an ecdf plot that is grouped by one discrete factor, to be colored continuously using a different (continues) factor?为按一个离散因子分组的 ecdf 图着色,以使用不同(连续)因子连续着色?
【发布时间】:2020-10-10 16:26:02
【问题描述】:

我正在尝试为每个主题(在本例中为“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"), 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 变量。

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

非常感谢,

尤瓦尔

【问题讨论】:

  • 这样的? p2 &lt;- ggplot( dat.ecdf, aes(rt, ecdf, group = subject, colour = color_factor)) + geom_line()
  • 非常感谢@Lime,这太完美了!正是我想要的,而且非常简单:)

标签: r ggplot2 colors ecdf


【解决方案1】:

尝试以下任一选项:

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')

输出:

【讨论】:

  • 非常感谢您的时间和精力@Duck!第二个选项最接近我的意思,但我实际上并没有提到颜色应该是连续比例类型对我来说很重要,它也适用于具有其他 color_factor 值的更多主题。这就是为什么@Lime 的回答更符合我的意图。
  • @YuvalHarris 所以你是对的。您也可以查看此内容以了解如何进行stackoverflow.com/help/someone-answers
【解决方案2】:

@Lime 提供的答案正是我想要的:

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

这会根据每个主题的“color_factor”值为每个主题的图着色:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 2018-01-22
    • 2018-11-13
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 2019-10-26
    相关资源
    最近更新 更多