2017-06-14 20 views
-2

我想代表我的數據箱線圖,我的數據幀目前看起來如下:我跟着例子,我不能讓facet_grid工作拆分我的數據

V1 V2  V3   V4  V5 
1 1 12.18 FEMALE A_ambiguus  Host 
2 2 11.81 FEMALE A_ambiguus  Host 
3 3 10.70 MALE A_ambiguus  Host 
4 4 11.07 MALE A_ambiguus  Host 
5 5 7.95 FEMALE A_ameliae Parasite 
6 6 7.42 FEMALE A_ameliae Parasite 

我運行下面的腳本並生成一個以X軸爲物種(V4),Y軸爲總長(V2),V2命令並以V5着色的圖形。

box <- ggplot(TL_sub, aes(x = V4, y = V2, group = V4)) + 
    scale_y_continuous(name = "TL (mm)") + 
    theme(axis.text.x=element_text(angle = 45, hjust = 1)) + 
    geom_boxplot(aes(fill=Condition)) + 
    aes(x=reorder(V4,V2),y=V2,label=TL) 

box 

Sorted boxplot of all data

的問題是,當我再運行

box + facet_grid(. ~ V5) 

的目標是要建立按性別(V3)分隔的兩個地塊,但它不能正常工作。我收到以下錯誤:

Error in combine_vars(data, params$plot_env, cols, drop = params$drop) : 
    At least one layer must contain all variables used for facetting 

如果需要,我可以提供完整的數據集。

任何幫助將是偉大的! 謝謝, Steven M.

+0

另一個例子這裏是一個鏈接到整個數據集: HTTPS://www.dropbox。 com/sh/yrw1rhr88q5a07t/AABpGsQp7efVoCfLeyFnxoE6a?dl = 0 –

+3

您的示例代碼和示例圖不匹配。在您的示例數據中沒有名爲Condition的列,並且當sex爲V3時,您在'facet_grid'中使用了V5。我不認爲這是導致錯誤的原因,但當問題包含衝突數據時很難回答。 – neilfws

+0

請仔細檢查您的問題,並提供所有的元素來處理它。 – Al14

回答

3

這適用於我使用完整的數據集。

TL_subset %>% 
    ggplot(aes(reorder(Species, TL), TL)) + 
    geom_boxplot(aes(fill = Condition)) + 
    labs(x = "Species", y = "TL (mm)") + 
    theme(axis.text.x = element_text(angle = 45, hjust = 1)) + 
    facet_grid(. ~ Sex) 

0

這裏是您的樣本數據

dataset<-data.frame(V2=c(12.18,11.81,10.70,11.07,7.95,7.42), 
        V3=c("FEMALE","FEMALE","Male","Male","FEMALE","FEMALE"), 
        V4=c("A_ambiguus","A_ambiguus","A_ambiguus","A_ambiguus","A_ameliae","A_ameliae"), 
        V5=c("Host","Host","Host",'Host',"Parasite","Parasite"))     


library(ggplot2) 

ggplot(data=dataset,aes(x=V4,y=V2)) + geom_boxplot(aes(fill=V5))+facet_grid(.~V3) +xlab("Species") + 
    ylab("TL (mm)") + scale_fill_discrete(name="Condition") 

enter image description here