2016-03-11 25 views
0

我有3个数据集来自3个不同的csv数据文件,我试图把它们放在一个boxplot中,每个box的平均值为点。一切都很好,直到我尝试添加手段 使用下面的脚本,我得到我想要的(所以这部分是所有好)输出图形...在R中的盒图上绘制多个方法

boxplot(a$total, p$total, f$total, 
     names = c("Total", "PR", "FM"), ylab="Evals", 
     col = c("firebrick4", "red3", "tomato1")) 

但是,我加入的时候遇到问题均值。使用points(mean(a$total), pch=18)正好增加了我想要的第一个框(“总计”),但是当我做points(mean(p$total), pch=18)时,它将“平均值”框p$total添加到“总计”框中,而不是“公关”框。任何帮助是极大的赞赏! All 3 mean points on first box

+1

试着先创建一个'means'向量:'means <-c(mean(a $ total),mean(p $ total),mean(f $ total))'然后做'+ points(means,pch = 18)' – JasonAizkalns

+0

或者使用'ggplot'和多个'stat_summary'几何。如果你添加一些玩具数据(尝试'dput'),那么我会告诉你如何。 – RHA

回答

0

我要给你一个ggplot解决方案:

首先,一些玩具的数据:

a <- data.frame(total = rnorm(50, 4, 0.3)) 
p <- data.frame(total = rnorm(50, 5, 0.4)) 
f <- data.frame(total = rnorm(50, 4, 0.25)) 

现在做图和使用stat_summary获得的手段:

library(ggplot2) 

ggplot(a, aes(y=total, x=NA)) + 
    geom_boxplot(data=a,aes(x="Total"),fill="firebrick4") + 
    geom_boxplot(data=p,aes(x="PR"),fill="red3") + 
    geom_boxplot(data=f,aes(x="FM"),fill="tomato1") + 
    xlab("") + 
    ylab("Evals") + 
    stat_summary(data = a, aes(x="Total"), fun.y = "mean", colour = "yellow", size = 3, geom = "point") + 
    stat_summary(data = p, aes(x="PR"), fun.y = "mean", colour = "yellow", size = 3, geom = "point") + 
    stat_summary(data = f, aes(x="FM"), fun.y = "mean", colour = "yellow", size = 3, geom = "point") 

结果:

enter image description here

+0

感谢您的开始,但我不断收到错误'错误:ggplot2不知道如何处理类的数据整数'任何提示在这里将不胜感激! – user6019758

+0

@ user6019758 ggplot仅适用于数据框。尝试将数据转换为数据框,我在答案中做了什么。这有帮助吗? – RHA

+0

是的!还必须更改数据框列上的名称,以使它们在我的三个数据框{names(ff)[names(ff)=='f $ total'] < - “total”}中保持一致 - 谢谢。太多:) – user6019758