从一个精简版创建多个条形图

时间:2015-10-14 15:32:28

标签: r plot ggplot2 bar-chart

我想知道是否有一种从一张桌子生成较小条形图的有效方法。我的目标是生成干净的图形,而不是一个难以读取的密集图形。有没有办法在没有简单编码的情况下做到这一点?源表位于data.frame对象类型中。

1 个答案:

答案 0 :(得分:2)

以下是四个不同的情节,其中一个可能是您喜欢的。

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