在ggplot2中对y轴求和

6

我有一个简单的数据框:

exdataframe <- data.frame(
  date = c("2020-10-18","2020-10-20","2020-10-21","2020-10-31","2020-10-29","2020-11-01","2020-11-02"),
  Salesman = c("Bob","Mark","Rob","Rob", "Mark","Richard","Richard"),
  values = c(10,50,30,100,120,90,20)
)
exdataframe$date <- as.Date(exdataframe$date) # transform to Date class


所以我绘制:
ggplot(exdataframe, aes(x = cut(date, breaks = "month"), y = values, fill=Salesman)) + 
  geom_bar(stat = "identity",position=position_dodge()) +
  geom_text(aes(label=values), position=position_dodge(width=0.9), vjust=-0.25) + 
  xlab("Month")

在此输入图像描述 我的问题是如何按销售员列汇总所有Y轴值,并按月份和销售员分组?

1个回答

2
我们可以使用 sum 进行分组汇总。
library(dplyr)
library(lubridate)
library(ggplot2)
library(zoo)
exdataframe %>%
    group_by(month = as.yearmon(date), Salesman) %>%
    summarise(values = sum(values), .groups = 'drop') %>%
    ggplot(aes(x = month, y = values, fill = Salesman, group = Salesman)) + 
     geom_bar(stat = 'identity', position = position_dodge())

-output

enter image description here


由于某些原因,图形绘制为水平方向,我尝试使用+coord_flip()进行修复,但是没有起作用。 - RIckHenr
@RIckHenr 不太清楚您的评论。您能展示一下您期望的输出是什么吗? - akrun
期望的输出是我展示的图表,但例如Mark的列将会是120+50=170,Rob的列将会是100+30=130,Richard的列将会是90+20=110。 - RIckHenr
@RIckHenr 我正在使用代码获取那些值。 - akrun
同样的代码给我这个结果,我认为这可能是ggplot、dplyr、lubridate或zoo包版本的问题。 - RIckHenr
对我来说,它的绘图方向与你的问题相同。我使用了 packageVersion('ggplot2')# [1] ‘3.3.2’ - akrun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接