ggplot:如何将组平均值作为直线添加到R中的分组条形图中?

ggplot:如何将组平均值作为直线添加到R中的分组条形图中?,r,ggplot2,graph,line,bar-chart,R,Ggplot2,Graph,Line,Bar Chart,我想在我的条形图中添加“所有各方平均”值,作为带图例的绿线(参见链接添加的第二张图片)。非常感谢你的帮助 现在,我的图表如下所示: 这就是我希望它看起来的样子: 以下是我的数据: Gender <- as.factor(c("M","M","M","M","M","M","M","M","M","M","F","F","F","F","F","F","F","F","F","F")) Political_Party <- as.factor(c("E200", "EKRE", "

我想在我的条形图中添加“所有各方平均”值,作为带图例的绿线(参见链接添加的第二张图片)。非常感谢你的帮助

现在,我的图表如下所示:

这就是我希望它看起来的样子:

以下是我的数据:

Gender <- as.factor(c("M","M","M","M","M","M","M","M","M","M","F","F","F","F","F","F","F","F","F","F"))
Political_Party <- as.factor(c("E200", "EKRE", "ERE", "Isamaa", "REF","Roh", "SDE", "Vabae", "Vasak", "KE","E200", "EKRE", "ERE", "Isamaa", "REF","Roh", "SDE", "Vabae", "Vasak", "KE"))
Media_coverage_average <- c(61,95,41,162,107,23,130,68,6,152,99,49,9,87,157,52,112,31,14,202)
All_Parties_average <- c(90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90)

my_data <- data.frame(Sugu, Political_Party, Media_coverage_average, All_Parties_average, stringsAsFactors=F)  

Gender也许你可以用geom_行添加它

my_plot <- ggplot(my_data, aes(x = Political_Party, y = Media_coverage_average, fill = Gender))+
  geom_bar(position="dodge", stat="identity")+
  geom_text(aes(label=Media_coverage_average), position=position_dodge(width=0.9), vjust=-0.25, size=6, family="Titillium Web", color= ExtraDarkGrey)+
  labs(x="Political Party", y="Average media coverage",
       caption = "Author")+
  scale_fill_manual(values = c(Grey, Purple), labels = c("Mehed", "Naised"))+
  theme_ipsum_tw(grid=FALSE, axis_text_size=18, axis_title_size = 16, caption_size = 15, base_size = 17, subtitle_size = 20)+
    geom_line(aes(y=All_Parties_average,group=1),size=1.5,color="green")   

my\u plot除了@Senzeybek的答案之外,您还可以通过将绿线的颜色传递到
geom\u line
aes
中并使用
scale\u color\u manual
设置颜色来为绿线添加图例:

库(ggplot2)
ggplot(我的数据,aes(x=政党,y=媒体覆盖率,填充率=性别))+
几何图形栏(position=“dodge”,stat=“identity”)+
几何图形文本(aes(标签=媒体覆盖率\平均值),位置=位置\减淡(宽度=0.9),vjust=-0.25,大小=6,family=“Titillium Web”,颜色=超深灰色)+
实验室(x=“政党”,y=“平均媒体报道”,
标题=“作者”)+
#主题(网格=假,轴文本大小=18,轴标题大小=16,标题大小=15,基础大小=17,副标题大小=20)+
刻度填充手册(数值=c(灰色、紫色),标签=c(“Mehed”、“Naised”))+
geom_hline(aes(yintercept=所有参与方的平均值,color=“average”,group=1),size=2)+
比例\颜色\手册(值=“绿色”)

谢谢您的帮助。是否可以使线条从边缘开始和结束?现在它在边缘留下了两列?还想删除图例名称颜色吗?再次感谢!!我据此编辑了我的答案。简而言之,您可以用
geom\u hline
替换
geom\u line
,用
yintercept
替换
aes
中的
y
my_plot <- ggplot(my_data, aes(x = Political_Party, y = Media_coverage_average, fill = Gender))+
  geom_bar(position="dodge", stat="identity")+
  geom_text(aes(label=Media_coverage_average), position=position_dodge(width=0.9), vjust=-0.25, size=6, family="Titillium Web", color= ExtraDarkGrey)+
  labs(x="Political Party", y="Average media coverage",
       caption = "Author")+
  theme_ipsum_tw(grid=FALSE, axis_text_size=18, axis_title_size = 16, caption_size = 15, base_size = 17, subtitle_size = 20)+
  scale_fill_manual(values = c(Grey, Purple), labels = c("Mehed", "Naised"))

my_plot

my_plot <- ggplot(my_data, aes(x = Political_Party, y = Media_coverage_average, fill = Gender))+
  geom_bar(position="dodge", stat="identity")+
  geom_text(aes(label=Media_coverage_average), position=position_dodge(width=0.9), vjust=-0.25, size=6, family="Titillium Web", color= ExtraDarkGrey)+
  labs(x="Political Party", y="Average media coverage",
       caption = "Author")+
  scale_fill_manual(values = c(Grey, Purple), labels = c("Mehed", "Naised"))+
  theme_ipsum_tw(grid=FALSE, axis_text_size=18, axis_title_size = 16, caption_size = 15, base_size = 17, subtitle_size = 20)+
    geom_line(aes(y=All_Parties_average,group=1),size=1.5,color="green")