在geom_bar w上绘制每组平均值
我有一个包含三列的数据框:一个因子(这里表示一本书中的一章)、一个数字ID(表示该句子在书中出现的位置)和一个值(表示书中的字数)。它看起来像这样:在geom_bar w上绘制每组平均值,r,ggplot2,R,Ggplot2,我有一个包含三列的数据框:一个因子(这里表示一本书中的一章)、一个数字ID(表示该句子在书中出现的位置)和一个值(表示书中的字数)。它看起来像这样: 句子长度 #A tibble:5368 x 3 章节ID长度 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
句子长度
#A tibble:5368 x 3
章节ID长度
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
# ... 还有5358行
我有一个情节非常接近我想要的
ggplot(数据,aes(x=ID,y=Length,fill=Chapter))+
几何图形栏(stat='identity')
我想补充的是,在每个组上,都有一条水平线,代表该组的平均值
这段代码,从另一个问题修改而来,让我很接近
统计摘要(fun.y=平均值,aes(x=1,yintercept=…y…,group=Chapter),geom=“hline”)
但这些线贯穿了整个地块;有没有办法只在绘图的相关部分绘制平均线?我怀疑这里的问题是,我的数据的顺序恰好是组
对应于绘图的连续部分;但在情节本身的美学中,没有任何东西需要这样做
更接近的方法不是使用stat_summary
,而是使用geom_smooth
geom_smooth(method='lm',se=FALSE)
让我非常接近。但不是线性回归,我真的只想要组的平均值(这里是每章句子长度的平均值)
有更好/更简单的方法吗?我不确定这是否是最简单的方法,但它确实有效:
使用
%.>%
管道,您可以向下传递df
,在geom_段
功能中对其进行总结。您可以通过
在%之后访问df
。>%
这里的geom_段解决方案:可能就是您正在寻找的Hanks@emily kothe;我没看到,geom_段是关键!下面的解决方案将它与wrapr的工具相结合,使其更易于阅读。非常感谢!即使它不是最简单的,它肯定是清楚的,表达得很好,并且避免了我所陷入的用手计算每一个平均值的荒谬。
library(tidyverse)
library(wrapr)
df %.>%
ggplot(data = ., aes(
x = ID,
y = Length,
fill = Chapter
)) +
geom_col() +
geom_segment(data = group_by(., Chapter) %>%
summarise(
mean_len = mean(Length),
min_id = min(ID),
max_id = max(ID)
),
aes(
x = min_id,
xend = max_id,
y = mean_len,
yend = mean_len
),
color = 'steelblue',
size = 1.2
)