在R中绘制堆栈图

时间:2019-03-05 08:17:00

标签: r ggplot2 reshape2

我想在R中绘制一个堆栈图: 我的数据集称为df:

df <- structure(list(id = c("A","B"),
                   x1 = c(10,30),
                   x2 = c(20,40),
                   x3 = c(70,30)), row.names = 1:2,
                   class = "data.frame")

    df<- melt(df, id.vars = "id")
library(ggplot2)
ggplot(data = df, aes(x = variable, y = value, fill =id)) + 
  geom_bar(stat = "identity") +
  xlab("\nCategory") +
  ylab("Percentage\n") +
  guides(fill = FALSE) +
  theme_bw()

输出不是我想要的,

  

我想在x轴上看到id,在堆叠列中看到x1,x2,x3。

1 个答案:

答案 0 :(得分:4)

ggplot的x始终指定x轴,fill指定要用来对数据进行分类的变量。因此,要创建所需的绘图,代码是:

    library(reshape2) ## for melt()
    library(ggplot2)

    df<- melt(n_df, id.vars = "id")

    ggplot(data = n_df, aes(x = id, y = value, fill =variable)) + 
      geom_bar(stat = "identity") +
      xlab("\nCategory") +
      ylab("Percentage\n") +
      guides(fill = FALSE) +
      theme_bw() 

Output:

如果要显示图例,则必须guides(fill = TRUE)

Second Plot