-1

我的数据框df

df
   EffYr EffMo count        dts
2   2012     1     1 2012-01-01
3   2012     2     3 2012-02-01
4   2012     3     1 2012-03-01
5   2012     5     1 2012-05-01
6   2012     6     1 2012-06-01
7   2012     7     2 2012-07-01
8   2012     8    11 2012-08-01
9   2012     9    84 2012-09-01
10  2012    10   184 2012-10-01
11  2012    11   165 2012-11-01
12  2012    12   246 2012-12-01
13  2013     1   414 2013-01-01
14  2013     2   130 2013-02-01
15  2013     3   182 2013-03-01
16  2013     4   261 2013-04-01
17  2013     5   229 2013-05-01
18  2013     6   249 2013-06-01
19  2013     7   330 2013-07-01
20  2013     8   135 2013-08-01

的每一行df代表一个“月-年”,最早的是 2012 年 1 月,最新的是 2013 年 8 月。我想绘制一个条形图(使用 ggplot2),其中每个条形代表一行,df条形高度等于行的count. 所以,我总共应该有 24 个酒吧。

我希望我的 x 轴分为 12 个间隔:1 月至 12 月,代表同一日历月的条形应位于相同的“月间隔”中。例如,如果df2011 年 1 月、2012 年 1 月、2013 年 1 月有一行,那么我的图表的 1 月部分应该有 3 个条形图,以便我可以比较我的业务在随后几年的 1 月份的表现。

谢谢

编辑:我想要一些看起来像的东西

ggplot(diamonds, aes(cut, fill=cut)) + geom_bar() +
  facet_grid(. ~ clarity)

但按月细分。我试图修改该代码以适应我的数据,但始终无法正确处理。

4

1 回答 1

3

@Ben 你问了一些 ggplot2 问题。我建议您坐下来使用一些好的 ggplot2 资源并尝试该示例以变得更加熟练。以下是我经常使用的两个优秀资源:

http://docs.ggplot2.org/current/
http://www.cookbook-r.com/Graphs/

现在我认为您需要的解决方案是:

## dat <- read.table(text="   EffYr EffMo count        dts
## 2   2012     1     1 2012-01-01
## 3   2012     2     3 2012-02-01
## 4   2012     3     1 2012-03-01
## 5   2012     5     1 2012-05-01
## 6   2012     6     1 2012-06-01
## 7   2012     7     2 2012-07-01
## 8   2012     8    11 2012-08-01
## 9   2012     9    84 2012-09-01
## 10  2012    10   184 2012-10-01
## 11  2012    11   165 2012-11-01
## 12  2012    12   246 2012-12-01
## 13  2013     1   414 2013-01-01
## 14  2013     2   130 2013-02-01
## 15  2013     3   182 2013-03-01
## 16  2013     4   261 2013-04-01
## 17  2013     5   229 2013-05-01
## 18  2013     6   249 2013-06-01
## 19  2013     7   330 2013-07-01
## 20  2013     8   135 2013-08-01", header=TRUE)

dat$month <- factor(month.name[dat$EffMo], levels = month.name)
dat$year <- as.factor(dat$EffYr)

ggplot(dat, aes(month, fill=year)) + geom_bar(aes(weight=count), position="dodge")

在此处输入图像描述

于 2013-07-15T22:10:49.627 回答