如何在ggplot2中制作横向和纵向堆叠条形图的条形图?

时间:2016-06-07 07:23:44

标签: r ggplot2 geom-bar

我的数据框是这样的:

data <- data.frame("GROUP"= c(1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3), "C1_PERCENTAGE" = c(0, 10 ,22, 34, 37, 18, 24, 13), "C2_PERCENTAGE"=c(0, 8, 20, 24, 23, 11, 18, 9))

我想生成一个条形图,其中条形图基于GROUP水平堆叠,以便水平地存在三组条形图。在垂直方向上,我想根据C1_PERCENTAGEC2_PERCENTAGE堆叠条形图。

我想使用ggplot2。我使用了基本图形,但这仅适用于C1_PERCENTAGE。

barplot(data$C1_PERCENTAGE, col = as.factor(data$GROUP)

enter image description here

这给出了C1_PERCENTAGE的情节。我想C2_PERCENTAGE也在这些酒吧旁边。

1 个答案:

答案 0 :(得分:2)

我有两种不同的变体。

首先我们需要准备数据,(a)添加id,(b)重塑为长格式。

准备数据

library(data.table)
d <- data.table(
  "id" = 1:24,
  "GROUP" = c(1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3),
  "C1_PERCENTAGE" = c(0, 10 ,22, 34, 37, 18, 24, 13),
  "C2_PERCENTAGE"=c(0, 8, 20, 24, 23, 11, 18, 9)
  )
ld <- melt(d, id.vars = c("id", "GROUP"))

堆积条形图

library(ggplot2)
ggplot(ld, aes(x = id, y = value, fill = variable)) + 
  geom_bar(stat = "identity", position = "stack")

enter image description here

分面条形图

ggplot(ld, aes(x = id, y = value, fill = factor(GROUP))) + 
  geom_bar(stat = "identity", position = "stack") +
  facet_wrap(~ variable, ncol = 1)

enter image description here