【发布时间】:2017-05-31 08:24:00
【问题描述】:
我有一张我很满意的面积图。我试图在面积图顶部覆盖一条粗实线。
该图是按频道划分的网站会话,其中每个频道都是区域图中的组(填充)。我的想法是显示总会话的实线图表,其中包含非常重的 alpha 显示这些会话的来源。
按数据看是这样的(因为ggplot函数依赖于数据结构)
> str(dataset)
'data.frame': 144 obs. of 5 variables:
$ Month : Factor w/ 24 levels "May-2015","Jun-2015",..: 1 2 3 4 5 6 7 8 9 10 ...
$ Channel : Factor w/ 6 levels "Facebook","Youtube",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Sessions : num 5065 4226 4779 5736 6350 ...
> head(dataset, n = 20)
Month Channel Sessions
1 May-2015 Facebook 5065
2 Jun-2015 Facebook 4226
3 Jul-2015 Facebook 4779
4 Aug-2015 Facebook 5736
5 Sep-2015 Facebook 6350
6 Oct-2015 Facebook 6199
7 Nov-2015 Facebook 8474
8 Dec-2015 Facebook 8340
9 Jan-2016 Facebook 11376
10 Feb-2016 Facebook 11290
11 Mar-2016 Facebook 13255
12 Apr-2016 Facebook 16693
13 May-2016 Facebook 14618
14 Jun-2016 Facebook 14208
15 Jul-2016 Facebook 14016
16 Aug-2016 Facebook 14978
17 Sep-2016 Facebook 14559
18 Oct-2016 Facebook 10583
19 Nov-2016 Facebook 6930
20 Dec-2016 Facebook 8918
我的面积图:
timeline <- ggplot(dataset, aes(x = Month, y = Sessions,fill = Channel, group = Channel)) +
geom_area(alpha = 0.7) +
# This piece right here is where I tried to add a solid line
geom_line(data = dataset, inherit.aes = FALSE, aes(x = Month, y = Sessions, group = Month)) +
theme(axis.text.x=element_text(angle=90, hjust=1))
我在geom_area(alpha = 0.7) 之前取得了成功,包括geom_area(alpha = 0.7),因为这产生了一个漂亮的面积图。
但下一行会导致意外行为:
geom_line(data = dataset, inherit.aes = FALSE, aes(x = Month, y = Sessions, group = Month))
我希望看到一条连续的线覆盖在顶部,但却得到了一系列断开的垂直条。查看输出底部的黑线。我尝试添加/删除命令 group = Month 但这并没有改变任何东西:
如何在堆叠面积图的最顶部通过折线图添加实线来表示总会话数?
【问题讨论】:
-
换句话说,当前图表的最顶部应该有一条实心粗线表示总流量,因为下面的区域是堆叠的
-
@Axeman 谢谢,我试了一下,但没有任何改变
timeline <- ggplot(dataset, aes(x = Month, y = Sessions,fill = Channel, group = Channel)) + geom_area(alpha = 0.3) + + stat_summary(aes(group = 1), fun.y = sum, geom = 'line') -
天啊!我有两个加号++,它有效。谢谢!
-
在这种情况下,aes 中的“group = 1”是什么?