创建堆积条形图的快速帮助 (ggplot2)
我有以下数据框:
<代码>> DF
年份公制兆瓦时
2003年需求498343
2004年需求1250904
2005年需求1665176
2006年需求2317643
2007年需求2455311
2008年需求3557987
2009年需求4268125
2010年需求5403704
2011年需求6596158
2012年需求7814387
2013年需求9008863
2014年需求10291085
2015年需求11796549
2003年实际159677
2004年实际192748
2005 年实际 248844
2006 年实际 372661
2007年实际705656
2008年实际838721
2009年实际1188242
2010年实际1708979
2011年实际0
2012年实际0
2013年实际0
2014年实际0
2015年实际0
2003高0
2004年高0
2005年高0
2006年高0
2007年高0
2008年高0
2009年高0
2010年高0
2011年最高价3631730
2012年最高5729024
2013年最高价6741785
2014年最高价9342798
2015年最高价11094798
2003低0
2004年低0
2005年低0
2006年低0
2007年低0
2008年低0
2009年低0
2010年低0
2011 年最低价 1637220
2012 年最低价 1850615
2013年最低价2064011
2014 年最低价 2277406
2015 年最低价 2490801
我想创建一个非常简单的堆积条形图:
-- x 轴:年份
-- y 轴:兆瓦时
-- 1 个堆栈,其中包含需求、最高、最低和实际(“公制”),按顺序堆叠在一起(而不是在顶部)。到目前为止,我只设法弄清楚如何将值堆叠在一起:
DF$'指标 <- 因子(DF$'指标',levels=c("需求","高","低","实际"))
qplot(x=年份,data=DF,geom="bar",weight=MWh,fill=公制)
#OR
ggplot(DF,aes(x=因子(年份),y=MWh,fill=因子(公制))) + geom_bar(position="stack")
本质上,我正在寻找的是每年一个条柱,其中“需求”值最高,并且较低的值(按上面的顺序)堆叠在一起。我相信我必须在某个地方使用 position="fill"
,但我不确定该把它放在哪里。基本上,我想表明的是需求将稳步上升,而供应(实际与预计的低增长与预计的高增长)无法以非常简单、紧凑的图表来满足需求。如果这不可能,也许将它们并排分组会更好?
非常感谢任何帮助!谢谢!!
I have the following data frame:
> DF
Year Metric MWh
2003 Demand 498343
2004 Demand 1250904
2005 Demand 1665176
2006 Demand 2317643
2007 Demand 2455311
2008 Demand 3557987
2009 Demand 4268125
2010 Demand 5403704
2011 Demand 6596158
2012 Demand 7814387
2013 Demand 9008863
2014 Demand 10291085
2015 Demand 11796549
2003 Actual 159677
2004 Actual 192748
2005 Actual 248844
2006 Actual 372661
2007 Actual 705656
2008 Actual 838721
2009 Actual 1188242
2010 Actual 1708979
2011 Actual 0
2012 Actual 0
2013 Actual 0
2014 Actual 0
2015 Actual 0
2003 High 0
2004 High 0
2005 High 0
2006 High 0
2007 High 0
2008 High 0
2009 High 0
2010 High 0
2011 High 3631730
2012 High 5729024
2013 High 6741785
2014 High 9342798
2015 High 11094798
2003 Low 0
2004 Low 0
2005 Low 0
2006 Low 0
2007 Low 0
2008 Low 0
2009 Low 0
2010 Low 0
2011 Low 1637220
2012 Low 1850615
2013 Low 2064011
2014 Low 2277406
2015 Low 2490801
I want to create a very simple stacked bar chart with:
-- x-axis: Year
-- y-axis: MWh
-- 1 stack with Demand, High, Low, and Actual ('Metric'), in that order, stacked OVER one another (as opposed to on-top). So far, I've only managed to figure out how to do it with the values stacked ON TOP of each other:
DF$'Metric <- factor(DF$'Metric',levels=c("Demand","High","Low","Actual"))
qplot(x=Year,data=DF,geom="bar",weight=MWh,fill=Metric)
#OR
ggplot(DF,aes(x=factor(Year),y=MWh,fill=factor(Metric))) + geom_bar(position="stack")
Essentially, what I'm looking for is a single bar per year where the "Demand" value is the highest, and the lower values (in the order above) are stacked over. I believe I have to use a position="fill"
somewhere, but I'm not sure where to put it. Basically, what I am trying to show is that Demand will be steadily rising, while Supply (Actual vs. projected Low growth vs. projected High growth) has been unable to meet it in a very simple, compact graphic. If this is not possible, perhaps it would be better to simply group them side-by-side?
Any help is much appreciated!! Thanks!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不确定您真正想要绘制什么,但从
position="fill"
我有一个印象,您想要绘制每年 Metric 的相对比例。这可以通过以下方式轻松完成。加载数据:
并绘制具有相同高度(带百分比)的堆叠条:
我可能误解了你的意思想要绘制,并且通过指定网格视口也可以在同一张图片中绘制两个不同的图形。我建议查看 gridextra 软件包,尤其是
arrange
。I am not sure about what you really would like to plot, but from the
position="fill"
I have an impression you want to plot the relative proportions of Metric per year. This can be done easily via the followings.Loading data:
And plot the stacked bars with the same height (with percentages):
I might misunderstood what you want to plot, and plotting two distinct graph in the same picture also possible with specifying grid viewports. I recommend looking at gridextra package, especially for
arrange
.position="identity"
根本不会移动条形(与默认堆叠相反),因此它们将被覆盖。不过,您必须注意因子水平的顺序,因为这样条形图可能会隐藏在彼此后面。position="identity"
will not move the bars at all (as opposed to the default stacking), so they will be overlayed. You have to watch out for the ordering of the factor levels though, because this way the bars can hide behind each other.