使用ggplot在R中左右绘制两个分组变量

时间:2018-03-21 09:00:15

标签: r ggplot2 mean

我有一个名为mydata的数据框。以下是相关列的示例:

Backlog.Item.Type     Item.Created.To.Closed.Days   Item.Created.To.Finished.Days         
User Story            67                            84
Task                  14                            17
Task                  9                             10
Epic                  105                           NA
User Story            56                            59 
Bug                   5                             NA

现在,我想要完成的内容如下:我想取Item.Created.To.Closed.Days列和Item.Created.To.Finished.Days列的均值,按Backlog.Item.Type分组,然后在彼此旁边绘图。计算我使用的平均值,它起作用:

mydata %>%
  group_by(Backlog.Item.Type) %>%
  summarise_at(vars(Item.Created.to.Closed.Days),
               funs(mean(Item.Created.to.Closed.Days, na.rm = TRUE)))

对于绘图部分,我尝试了类似

的内容
mydata.long <- melt(mydata)

ggplot(mydata.long,
       aes(Backlog.Item.Type, value, fill = variable)) +
 geom_bar(stat = "identity", position = "dodge")

但我似乎无法让它发挥作用。我还应该注意,我只想为两列绘制Backlog.Item.Type == 'User Story'Backlog.Item.Type == 'Task'的均值。用视觉表示,这就是我想要完成的事情:

请原谅我糟糕的油漆技巧!我没有任何颜色或其他偏好,我只需要完成它:D提前谢谢,我希望我已经足够清楚并以可理解的方式提出我的问题!

1 个答案:

答案 0 :(得分:0)

假设您提供的图表包含您的整个数据集,因此不应与您在此处提供的示例数据相对应:

mydata=mydata %>% group_by(Backlog.Item.Type) %>% summarise(Item.Created.To.Closed.Days=
                        mean(Item.Created.To.Closed.Days,na.rm=T),
                        Item.Created.To.Finished=mean(Item.Created.To.Finished,na.rm=T)) 

mydata=mydata[complete.cases(mydata),]%>%melt()
ggplot(mydata,aes(x=Backlog.Item.Type,y=value,fill=variable))+geom_bar(stat = "identity", position = "dodge")

enter image description here