代码之家  ›  专栏  ›  技术社区  ›  Jack Armstrong

在R中绘制堆积条形图

  •  -2
  • Jack Armstrong  · 技术社区  · 6 年前

    这不是一个重复的问题,但它基于: Stacked bar chart

    我正在尝试使用AgStudy接受的答案。 我有以下数据框:

      types   c1      c2  c3  c4   c5  c6
           A   20     2   6   1    16  1
           B   15     1   7   1    7   1
           C   7      5   3   0    8   3
           D   5      7   4   7    6   4
           F   6      6   6   2    5   6
           E   17     8   2   3    4   9
    
    
    tbl<-melt(tbl,id.vars="types")
    ggplot(tbl,aes(x=types,y=value,fill=variable))+geom_bar(stat='identity')
    

    这是创建堆积条形图的简单方法。我最初有一个关于堆叠原因的问题 melt() .

    我的问题是如何将数据堆叠起来,以便在每行一列中的每一列上获取所有值。它不会堆叠,因为我有错误的名字,我不理解融化的输出。但现在我确实了解了融化函数,它将数据拆分并将其分组到 id.vars. 通过这样做,您可以创建一个图形,这样图形的填充方面将是变量,在该变量中,它用 value 列来自 melt .R将其解释为堆积条形图。

    1 回复  |  直到 6 年前
        1
  •  2
  •   akrun    6 年前

    melt ?reshape2::melt

    value.name variable.name

    newtbl <- reshape2::melt(tbl, id.var = "types")
    

    head

    head(newtbl, 2)
    #   types variable value
    #1     A       c1    20
    #2     B       c1    15
    

    names colnames data.frame

    names(newtbl) 
    #[1] "types"    "variable" "value"   
    

    str

    str(newtbl)
    #'data.frame':  36 obs. of  3 variables:
    # $ types   : chr  "A" "B" "C" "D" ...
    # $ variable: Factor w/ 6 levels "c1","c2","c3",..: 1 1 1 1 1 1 2 2 2 2 ...
    # $ value   : int  20 15 7 5 6 17 2 1 5 7 ...
    

    ggplot

    ggplot(newtbl,aes(x=types,y=value,fill=variable)) +
                         geom_bar(stat='identity')