2015-10-14 53 views
0

我想知道是否有从一张表生成较小条形图的有效方法。我的目标是生成干净的可用图形,而不是一张难以阅读的稠密图形。有没有一种方法可以做到这一点,而无需编码。源表格位于数据框对象类型中。从一个精简版创建多个条形图

+0

它会帮助很多,如果你可以发布[示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),但看看[在此页](http://docs.ggplot2.org/0.9.3.1/geom_bar.html)在'ggplot'中的一些选项。方面特别可能是你正在寻找的。 – Axeman

回答

1

这里有四个不同的情节,也许其中一个是你喜欢的。

library(ggplot2) # plotting and the diamonds data set 
library(dplyr) # needed for the filter function 


# Unwanted 'dense' graph 
g1 <- 
    ggplot(diamonds) + 
    aes(x = cut, fill = color) + 
    geom_bar() + 
    ggtitle("g1: stacked bar plot") 

enter image description here

# or 
g2 <- 
    ggplot(diamonds) + 
    aes(x = cut, fill = color) + 
    geom_bar(position = position_dodge()) + 
    ggtitle("g2: dodged bar plot") 

enter image description here

# different option, layered bars 
g3 <- 
    ggplot() + 
    aes(x = cut, fill = color) + 
    geom_bar(data = filter(diamonds, color == "D"), width = 0.90) + 
    geom_bar(data = filter(diamonds, color == "E"), width = 0.77) + 
    geom_bar(data = filter(diamonds, color == "F"), width = 0.63) + 
    geom_bar(data = filter(diamonds, color == "G"), width = 0.50) + 
    geom_bar(data = filter(diamonds, color == "H"), width = 0.37) + 
    geom_bar(data = filter(diamonds, color == "I"), width = 0.23) + 
    geom_bar(data = filter(diamonds, color == "J"), width = 0.10) + 
    ggtitle("g3: overlaid bar plot") 

enter image description here

# facet plot 
g4 <- 
    ggplot(diamonds) + 
    aes(x = cut) + 
    geom_bar() + 
    facet_wrap(~ color) 

enter image description here