按多个字段分组

时间:2015-07-20 08:21:17

标签: r plot ggplot2 facet

我正在重新学习ggplot,而且我认为这是一个棘手的分组问题

SamplePeriod=c(rep(1:2, each=6, len=12))
Market=c(rep(LETTERS[1:2], each=3, len=12))
Day=c(rep(1:3,len=12))
Sales=c(5,6,7,8,9,7,5,6,7,5,6,7)
df <- data.frame(Sales=as.numeric(Sales),Day=as.numeric(Day),
             SamplePeriod=as.numeric(SamplePeriod),Market)

df
   Sales Day SamplePeriod Market
1      5   1            1      A
2      6   2            1      A
3      7   3            1      A
4      8   1            1      B
5      9   2            1      B
6      7   3            1      B
7      5   1            2      A
8      6   2            2      A
9      7   3            2      A
10     5   1            2      B
11     6   2            2      B
12     7   3            2      B

我希望将销售量作为日期的函数。每个SamplePeriod-Market组合应该是它自己的行(1-A一行,1-B,2-A,2-B一行)。最后,我想以不同的方式为市场着色,并在一个地块上绘制所有内容。

了解如何在自己的情节中面对每个市场也是有用的。

如果有人在我生成的R代码中看到任何令人震惊的东西,欢迎批评!

1 个答案:

答案 0 :(得分:0)

实现这一目标的最简单方法可能是使用facet_grid。以下代码将为您提供带有facet的分面图,每个SamplePeriod - Market组合使用每个Market的彩色线:

ggplot(df, aes(x = Day, y = Sales, color = Market)) +
  geom_line(size=2) +
  facet_grid(SamplePeriod ~ Market, labeller = label_both) +
  theme_bw()

这给出了以下情节:

enter image description here

正如@drmariod所提到的,您可以将其与interaction

结合使用
ggplot(df, aes(x=Day, y=Sales, color=interaction(Market,SamplePeriod))) +
  geom_line(size=2) +
  facet_grid(SamplePeriod ~ Market, labeller = label_both) +
  theme_bw()

这给出了:

enter image description here