使用 ggplot2 制作堆积面积图 [英] Making a stacked area plot using ggplot2
问题描述
我正在使用以下数据结构尝试制作堆积面积图:
I'm using the following data structure to try and make a stacked area chart:
<代码> DF< - data.frame(PopDen = C(0.002279892,0.002885407,0.004291351,0.002457731,0.006631572,0.007578882,0.004465446,0.007436628,0.009001456,0.006951703,0.003602076,0.005695585,0.005819783,0.007412274,0.004931548,0.006257411,0.008635908,0.005438558,0.002251421,0.006438558),DomArea = C(253500,135270,197180,131590,142210,166920,125640,184600,139940,126280,127760,190940,133440,143510,117260,69340,143620,127480,181970,164180), PR_Cat = c(高"、高"、低"、低"、低"、低"、低"、低"、高"、高"、中"", "中", "中", "低", "低", "中", "中", "低", "低", "低") )p <- ggplot(df, aes(PopDen, order(DomArea), color = PR_Cat))p + geom_area(aes(colour = PR_Cat, fill= PR_Cat), position = 'stack')
但是,我不明白如何将区域堆叠在一起;目前他们正在重叠.我假设这里需要一个 position = 'stack'
参数,但无论是否包含该图,它看起来都一样.
However, I don't understand how to stack the areas on top of each other; at the moment they are overlapping. I assume that I need a position = 'stack'
argument here, but the plot looks the same whether it is included or not.
另外,是否可以按 PR_Cat
中的类别之一对 DomArea
进行排序,或者我是否需要重新组织我的数据?
Also, is it possible to order DomArea
by one of the categories in PR_Cat
or would I need to reorganize my data?
推荐答案
我不确定您在此处绘制什么,但是您不想沿 绘制 PopDen
y 轴而不是 x 轴?您可以使用 plyr
包中的 ddply
按每个 PR_Cat
类别对 DomArea
进行排序,然后堆叠作为如下:编辑我意识到您可能希望图以 Low, Medium High
的顺序堆叠,因此我们需要首先通过执行以下操作来强制对 PR_Cat
因素进行排序:
I'm not sure what you are plotting here, but don't you want to be plotting PopDen
along the y axis rather than the x axis? You can order the DomArea
by each PR_Cat
category using ddply
from the plyr
package, and then the stacking works as follows:
EDIT
I realized you probably want the plot to be stacked in the order Low, Medium High
, so we need to first force this ordering on the PR_Cat
factor by doing:
df$PR_Cat <- ordered( df$PR_Cat, levels = c('Low', 'Medium', 'High'))
现在使用 ddply
创建 DomAreaByCat
列:
And now create the DomAreaByCat
column using ddply
:
df <- ddply(df, .(PR_Cat), transform, DomAreaByCat = order(DomArea))
您的 df
将如下所示:
> df
PopDen DomArea PR_Cat DomAreaByCat
1 0.004291351 197180 Low 8
2 0.002457731 131590 Low 5
3 0.006631572 142210 Low 9
4 0.007578882 166920 Low 2
5 0.004465446 125640 Low 3
6 0.007436628 184600 Low 7
7 0.007412274 143510 Low 11
8 0.004931548 117260 Low 4
9 0.005438558 127480 Low 10
10 0.002251421 181970 Low 6
11 0.006438558 164180 Low 1
12 0.003602076 127760 Medium 4
13 0.005695585 190940 Medium 1
14 0.005819783 133440 Medium 3
15 0.006257411 69340 Medium 5
16 0.008635908 143620 Medium 2
17 0.002279892 253500 High 4
18 0.002885407 135270 High 2
19 0.009001456 139940 High 3
20 0.006951703 126280 High 1
然后你可以像这样绘制堆积面积图:
And then you can do the stacked area plot like this:
p <- ggplot(df, aes( DomAreaByCat, PopDen))
p + geom_area(aes(colour = PR_Cat, fill= PR_Cat), position = 'stack')
这篇关于使用 ggplot2 制作堆积面积图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!