在R

时间:2018-07-10 03:05:43

标签: r ggplot2 bar-chart

这不是重复的问题,但是基于: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()堆积原因的问题。

我的问题是要堆叠数据以将所有值放在每一行的每一列的顶部。它不会堆叠,因为我使用了错误的名称并且不了解melt的输出。但是,既然我确实了解了melt函数,那么它将拆分数据并将其分组在id.vars.上,这样您就可以创建一个图形,这样图形的填充方面将是其填充位置的变量valuemelt列中的值的条。 R将其解释为堆积的条形图。

1 个答案:

答案 0 :(得分:2)

默认情况下,melt将'wide'格式更改为'long'格式,并为列名和对应于'wide'格式的列的值创建两个列'variable'和'value'相应地。根据{{​​1}}的用法是

  

melt(data,...,na.rm = FALSE,value.name =“ value”)

我们可以将?reshape2::meltvalue.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

或使用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