2016-03-11 28 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