【发布时间】:2019-06-30 01:00:54
【问题描述】:
我有一个包含三列的数据框:一个因子(这里代表书中的一章)、一个数字 ID(代表该句子在书中出现的位置)和一个值(代表书中的单词数)。它看起来像这样:
sentence.length
# A tibble: 5,368 x 3
Chapter ID Length
<fct> <dbl> <dbl>
1 1 1 294
2 1 2 19
3 1 3 77
4 1 4 57
5 1 5 18
6 1 6 18
7 1 7 27
8 1 8 56
9 1 9 32
10 1 10 25
# ... with 5,358 more rows
我有一个非常接近我想要的情节。
ggplot(data,aes(x=ID,y=Length,fill=Chapter)) +
geom_bar(stat='identity')
我想补充的是,在每个组上,都有一条代表该组平均值的水平线。
这段代码,从另一个问题修改,让我很接近
stat_summary(fun.y = mean, aes(x = 1, yintercept = ..y.., group = Chapter), geom = "hline")
但是线条延伸到整个情节;有没有办法仅在绘图的相关部分上绘制平均线?我怀疑这里的问题是我的数据恰好是这样排序的,group 对应于绘图的连续部分;但情节本身的美学没有任何要求。
更接近的方法是不使用stat_summary,而是使用geom_smooth; geom_smooth(method='lm',se=FALSE) 让我非常接近。但不是线性回归,我真的只想要组的平均值(这里是每章句子长度的平均值)。
有更好/更简单的方法吗?
【问题讨论】:
-
这里的 geom_segment 解决方案:stackoverflow.com/questions/36207564/… 可能就是你要找的东西
-
谢谢@emily-kothe;我没有看到,geom_segment 是关键!下面的解决方案将它与 wrapr 的工具相结合,使其更易于阅读。