需要使用嵌套的ddply函数和facet wrap来标记每个geom_vline的因子

时间:2014-08-17 14:26:10

标签: r ggplot2 plyr facet-wrap

我无法弄清楚如何用年标记每个vline。有人可以帮忙吗? 下面是我的数据集和代码的示例。我想在平均长度vline上标注年份和/或与图例中的年份具有相同的颜色代码。

Sector2 Family  Year    Length
BUN Acroporidae 2010    332.1300496
BUN Poritidae   2011    141.1467966
BUN Acroporidae 2012    127.479
BUN Acroporidae 2013    142.5940556
MUR Faviidae    2010    304.0405
MUR Faviidae    2011    423.152
MUR Pocilloporidae  2012    576.0295
MUR Poritidae   2013    123.8936667
NTH Faviidae    2010    60.494
NTH Faviidae    2011    27.427
NTH Pocilloporidae  2012    270.475
NTH Poritidae   2013    363.4635


require('ggplot2')
require('plyr')

ggplot(NMPSCFAM, aes(Length,  fill=Year)) + 
  geom_histogram(position="dodge", binwidth=50, colour="black") + xlim(0, 500) +
  scale_fill_grey(start = 1, end = 0)+ 

  geom_vline(data=ddply(NMPSCFAM, Year~Family~Sector2, numcolwise(mean)), 
   mapping=aes(xintercept=Length), linetype=2) + 
  xlab("Length Class") +
  ylab(expression(paste("Total Count"))) + #( ", m^2, ")", sep = 
  facet_wrap( ~ Family + Sector2, ncol=3, scales = "free")

geom_hist using ggplot and facet wrap

1 个答案:

答案 0 :(得分:1)

要让vlines与条形颜色相同,然后将参数color=Year(假设Year是数据框中的因子)添加到aes()的{​​{1}},然后使用{{1使用与fill相同的值。

geom_vline()