如何在条形图中堆叠水平?

How to stack a level in a bar chart?

我正在尝试从 2x2 数据框构建堆叠条形图。我正在使用 ggplot2 1.0.0。不幸的是,B 级别数据的列只显示一种颜色,而不是两种颜色。

df <- data.frame(x1 = rep(c("A","B"), each = 2), x2 = c(75.0, 25.0, 50.0, 50.0))


fig1 <- ggplot(data = df, aes(x = x1, y = x2)) + geom_bar(aes(x1, fill = x2), stat = "identity") + xlab("") + ylab("%") + ggtitle("df")
fig1 + geom_text(aes(label = x2), vjust = -0.8, colour = "white")

代码生成下图:http://imgur.com/j3DEO5h

有什么想法吗?

您使用连续比例填充,因此两个 50 值具有相同的颜色。您可以使用这样的离散比例:

ggplot(transform(df, var = as.factor(1:2)), 
       aes(x = x1, y = x2, fill = var)) + 
   geom_bar(stat = "identity")