我的数据框,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
的{1}}。所以,我应该总共有24个吧。
我希望将x轴分为12个区间:Jan-Dec,代表相同日历月的条形应位于相同的“月间隔”中。例如,如果count
在2011年1月,2012年1月,2013年1月有一行,那么我的图表的Jan部分应该有3个柱,以便我可以比较我的业务在1月份的业绩。
由于
编辑:我想要一些看起来像
的东西df
但按月分解。我试图修改该代码以适合我的数据,但永远不能正确。
答案 0 :(得分:2)
@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")