将geom_line(不同数据)添加到多层ggplot时出错(找不到ymax)

时间:2015-04-24 22:29:29

标签: r ggplot2

我正在尝试生成一个总结数据集的图,首先绘制中位数&区域/黑线中的分位数,之后我想用红线勾勒出一个特定的“公司”。

我也希望在对变量进行分面时这样做,从而一次绘制多个变量。

我绘制的示例代码如下:

require(dplyr)
require(ggplot2)

dt <- structure(list(Firm = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 
    2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 
    4L), .Label = c("a", "b", "c", "d"), class = "factor"), Year = c(2008L, 
    2009L, 2008L, 2009L, 2008L, 2009L, 2008L, 2009L, 2008L, 2009L, 
    2008L, 2009L, 2008L, 2009L, 2008L, 2009L, 2008L, 2009L, 2008L, 
    2009L, 2008L, 2009L, 2008L, 2009L), variable = structure(c(1L, 
    1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 
    3L, 1L, 1L, 2L, 2L, 3L, 3L), .Label = c("var1", "var2", "var3"
    ), class = "factor"), value = c(0.991894223, 2.216322113, 3.189415462, 
    0.663732077, 0.444826423, 2.674568191, 1.272077011, 7.691464914, 
    4.263339855, 0.214415839, 3.995328653, 6.028747322, 8.191459456, 
    0.16205906, 4.056495056, 5.17994524, 0.42435417, 0.678655669, 
    6.246411921, 0.505532339, 4.65045746, 8.85141854, 5.850616048, 
    2.028583225)), .Names = c("Firm", "Year", "variable", "value"
    ), class = "data.frame", row.names = c(NA, -24L))

head(dt)
   Firm Year variable     value
1     a 2008     var1 0.9918942
2     a 2009     var1 2.2163221
3     a 2008     var2 3.1894155
4     a 2009     var2 0.6637321
5     a 2008     var3 0.4448264
6     a 2009     var3 2.6745682

我现在手动计算带状/线图的ymin,ymax和y。他们的情节很好。

dt_aggregates <- dt %>%
  group_by(variable, Year) %>%
  arrange(variable, Year) %>%
  summarize(y=median(value))
dt_aggregates$ymin <- 0.9*dt_aggregates$y
dt_aggregates$ymax <- 1.1*dt_aggregates$y

这将是我想强调的公司:

dt_focus <- filter(dt, Firm=="a")

下面的情节很好,几乎就是我想要的。

g <- ggplot(data=dt_aggregates, 
       aes(x=Year, 
           y=y,
           ymax=ymax,
           ymin=ymin,
           group=variable)) + 
  facet_grid(variable~., scales="free") + geom_line() + geom_ribbon(alpha=0.3) +
  theme_bw() 

但是,我想在此处添加另一行(针对一家公司)(红色)。 一旦我尝试添加一个单独的数据帧的新行,我得到以下错误。非常感谢任何有关使其工作的帮助

# Error in eval(expr, envir, enclos) : object 'ymax' not found
g + geom_line(data=dt_focus, 
            aes(x=Year, y=value, group=variable),
            col="red", size=2)

0 个答案:

没有答案
相关问题