2016-11-14 34 views
0

我有一個數據幀df使用facet_grid和刪除未使用的水平coord_flip在GGPLOT2

df<- structure(list(Categorie = structure(c(1L, 1L, 2L, 2L, 4L, 4L, 
3L, 1L, 1L, 2L, 2L, 4L, 4L, 3L, 1L, 1L, 2L, 2L, 4L, 4L, 3L, 1L, 
1L, 2L, 2L, 4L, 4L, 3L, 1L, 1L, 2L, 2L, 4L, 4L, 3L, 1L, 1L, 2L, 
2L, 4L, 4L, 3L, 1L, 1L, 2L, 2L, 4L, 4L, 3L, 1L, 1L, 2L, 2L, 4L, 
4L, 3L), .Label = c("Age classes", "Climate", "Nutrient availability", 
"PFT"), class = "factor"), Sub_categories = structure(c(7L, 4L, 
6L, 1L, 3L, 2L, 5L, 7L, 4L, 6L, 1L, 3L, 2L, 5L, 7L, 4L, 6L, 1L, 
3L, 2L, 5L, 7L, 4L, 6L, 1L, 3L, 2L, 5L, 7L, 4L, 6L, 1L, 3L, 2L, 
5L, 7L, 4L, 6L, 1L, 3L, 2L, 5L, 7L, 4L, 6L, 1L, 3L, 2L, 5L, 7L, 
4L, 6L, 1L, 3L, 2L, 5L), .Label = c("Continental", "DBF", "ENF", 
"Intermediate-Old", "Low-High", "Temperate", "Young"), class = "factor"), 
    Variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L), .Label = c("Age", "Clay content", "GPP", "GPP*Age", 
    "GPP*P", "GPP*P trend", "N availability", "SPI"), class = "factor"), 
    Importance = c(19.2, 23.7, 45.2, 45.7, 39, 66.8, 34.8, 10.9, 
    16.2, 9.2, 6.3, 15.7, 2.1, 10, 13.2, 7.1, 6.1, 3.8, 2.4, 
    7.3, 5.2, 6.4, 10, 6.6, 3.7, 2.9, 5.8, 8.4, 17.7, 0, 6.1, 
    5.2, 8.4, 2.8, 6.7, 11.8, 21.1, 9.8, 21.9, 20, 6.3, 13.5, 
    2.3, 7.6, 3.9, 1.3, 3.9, 0.4, 3.8, 10.9, 7.5, 4.5, 5.8, 0.3, 
    2.5, 9.4)), .Names = c("Categorie", "Sub_categories", "Variable", 
"Importance"), class = "data.frame", row.names = c(NA, -56L)) 

我希望做一個facet_grid繪製我的數據。與CategorieSub_categories變量。我運行以下命令行:

library(ggplot2) 

ggplot(data = var_Imp) + 
    geom_bar(mapping = aes(x = Variable, y = Importance, fill=Variable), width = 1, stat= "identity", position = "stack") + 
    coord_flip() + 
    facet_grid(Categorie~Sub_categories, scales="free", space="free", shrink=TRUE, drop=TRUE)+ 
    theme_bw(base_size = 14, base_family = "Helvetica")+ 
    theme(axis.ticks.length=unit(-0.25, "cm"), 
     legend.position="none", 
     legend.box="horizontal", 
     legend.key = element_blank(), 
     legend.text=element_text(size=14), 
     axis.text.x = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm")), 
     axis.text.y = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm")), 
     axis.ticks.y=element_blank())+ 
    xlab("") + 
    ylab("Relative contribution [%]")+ 
    scale_fill_brewer(type = "div") 

然而,在某些方面的任何信息的水平仍然繪製雖然他們不應該因爲它沒有任何信息。我認爲scales="free"space="free"參數可以完成這項工作,但顯然不是。任何人都知道我可以如何繪製我的數據而不使用未使用的級別?謝謝

+2

請參閱['?droplevels'](http://stackoverflow.com/questions/1195826/drop-factor-levels-in-a-subsetted-data-frame)。 –

+0

這個問題更多來自'categorie'和'Sub_categories'變量之間的交互。從理論上講,所有的級別都只是用於一些交互。 –

回答

相關問題