我有一张我很满意的区域图表。我试图在区域图的顶部覆盖一条粗实线。
该图是按频道划分的网站会话,其中每个频道都是区域图中的组(填充)。我的想法是,我将展示一个完整会话的实线图表,其中包含非常重的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_line(data = dataset, inherit.aes = FALSE, aes(x = Month, y = Sessions, group = Month))
我希望看到一条连续的线覆盖在顶部,而是得到一系列破碎的垂直条。请参阅输出底部的黑线。我尝试添加/删除命令group = Month
但是没有改变任何内容:
如何通过折叠区域图表顶部的折线图添加实线来表示总会话数?
答案 0 :(得分:2)
虽然你在那里展示了一些不错的数据,但它实际上并不是可重现的。从帮助文件我们可以做到:
series <- data.frame(
time = c(rep(1, 4),rep(2, 4), rep(3, 4), rep(4, 4)),
type = rep(c('a', 'b', 'c', 'd'), 4),
value = rpois(16, 10)
)
ggplot(series, aes(time, value)) +
geom_area(aes(fill = type))
要计算总和,我们必须实际总结这些区域,这可以通过stat_summary
完成:
ggplot(series, aes(time, value)) +
geom_area(aes(fill = type)) +
stat_summary(fun.y = sum, geom = "line", size = 2)
如果需要,您可以将aes(group = 1)
添加到stat_summary
。这样可以确保仅针对x
和y
进行计算,而无需进一步分组,并且线路已连接。它会覆盖自动分组,当您将美学设置为因子时会发生这种分组。如果x
是一个因素,这也会有所帮助,就像你的例子一样。