2015-04-29 51 views
14

我是新來的R和之前的任何程序還沒有完成......在R,處理錯誤:GGPLOT2不知道如何處理數字類的數據

當我試圖創建帶有標準錯誤欄的框圖我收到標題中提到的錯誤消息。

我使用的腳本我R上菜譜發現了我調整了一下:

ggplot(GVW, aes(x="variable",y="value",fill="Genotype")) + 
    geom_bar(position=position_dodge(),stat="identity",colour="black", size=.3)+ 
    geom_errorbar(data=GVW[1:64,3],aes(ymin=value-seSKO, ymax=value+seSKO), size=.3, width=.2, position=position_dodge(.9))+ 
    geom_errorbar(data=GVW[65:131,3],aes(ymin=value-seSWT, ymax=value+seSWT), size=.3, width=.2, position=position_dodge(.9))+ 
    geom_errorbar(data=GVW[132:195,3],aes(ymin=value-seEKO, ymax=value+seEKO), size=.3, width=.2, position=position_dodge(.9))+ 
    geom_errorbar(data=GVW[196:262,3],aes(ymin=value-seEWT, ymax=value+seEWT), size=.3, width=.2, position=position_dodge(.9))+ 
    xlab("Time")+ 
    ylab("Weight [g]")+ 
    scale_fill_hue(name="Genotype", breaks=c("KO", "WT"), labels=c("Knock-out", "Wild type"))+ 
    ggtitle("Effect of genotype on weight-gain")+ 
    scale_y_continuous(breaks=0:20*4) + 
    theme_bw() 

Data<- data.frame(
    Genotype<- sample(c("KO","WT"), 262, replace=T), 
    variable<- sample(c("Start","End"), 262, replace=T), 
    value<- runif(262,20,40) 
) 
names(Data)[1] <- "Genotype" 
names(Data)[2] <- "variable" 
names(Data)[3] <- "value" 

回答

18

錯誤發生,因爲你試圖在geom_errorbar映射數字矢量dataGVW[1:64,3]ggplot僅適用於data.frame

一般情況下,您不應該在ggplot調用子集內。你這樣做是因爲你的標準錯誤存儲在四個獨立的對象中。將它們添加到您的原始data.frame,您將能夠在一次通話中繪製所有內容。

此處使用dplyr解決方案來預先彙總數據並計算標準錯誤。

library(dplyr) 
d <- GVW %>% group_by(Genotype,variable) %>% 
    summarise(mean = mean(value),se = sd(value)/sqrt(n())) 

ggplot(d, aes(x = variable, y = mean, fill = Genotype)) + 
    geom_bar(position = position_dodge(), stat = "identity", 
     colour="black", size=.3) + 
    geom_errorbar(aes(ymin = mean - se, ymax = mean + se), 
     size=.3, width=.2, position=position_dodge(.9)) + 
    xlab("Time") + 
    ylab("Weight [g]") + 
    scale_fill_hue(name = "Genotype", breaks = c("KO", "WT"), 
     labels = c("Knock-out", "Wild type")) + 
    ggtitle("Effect of genotype on weight-gain") + 
    scale_y_continuous(breaks = 0:20*4) + 
    theme_bw() 
+0

非常感謝你Scoa,數據現在按預期打印。雖然,其中一個淘汰列失蹤,但我應該能夠解決這個問題。 – embacify

相關問題