使用ggplot2为每个条件创建不同颜色的图形(时间序列数据)

时间:2015-07-21 09:29:56

标签: r variables colors ggplot2

如果之前已经回答过,请指出正确的方向。我老老实实地尝试过,但没有找到解决这个问题的任何事情:

我收集了20个人的时间序列数据。具体地,响应于60个图像/声音刺激,相对瞳孔大小(y)随时间的变化(= x,51个时间区间)。有两种受试者内操作:一半的刺激(= 30)是情绪化的,另外30种是中性的。在之前的睡眠中,一半的情绪和中性刺激都被提示。

所以,总的来说,我们有15个情绪&重新激活,15情绪化非重新激活,15中立&重新激活& 15中性&未重新激活(2x2 valcode与repcode)。我有一列描述了效价(情绪与中性),称为“valcode”(1 =中性,2 =情绪),一列定义重新激活状态“repcode”(0 =非重新激活,2 =重新激活)。

以下是数据的第一行:

    head(df)
      time valcode  pupil_size repcode stimuli subject 
    1    0       2 0.000000000       0     1   1
    2  100       2 0.014501468       0     1   1
    3  200       2 0.004117636       0     1   1
    4  300       2 0.011774388       0     1   1
    5  400       2 0.061472275       0     1   1
    6  500       2 0.083575322       0     1   1

我想以这样一种方式绘制数据,即四个条件中的每一个都有一个单独的颜色。到目前为止,我只使用以下行设置了repcode = 0与repcode = 1的不同形状以及valcode = 1与2的不同颜色:

    dfPlot <- ggplot(df, aes(x=time, y=pupil_size, shape=repcode, colour=valcode))
    dfPlot + stat_summary(fun.y=mean, geom = "line", size=1) +stat_summary(fun.data=mean_se, geom="pointrange", size=1) + theme_bw(base_size = 10) + ggtitle("Pupil response") + ylab("Normalised pupil size") + xlab("Time relative to baseline (in ms)") 

我尝试插入color = c(repcode,valcode),但R给出了以下错误消息:

   Error: Aesthetics must either be length one, or the same length as the dataProblems:time, pupil_corr

我能想到的唯一其他解决方案是生成repcode和valcode的复合变量,并将其定义为颜色。有更简单的解决方案吗?

谢谢!

0 个答案:

没有答案