这不是重复的问题,但是基于: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.
上,这样您就可以创建一个图形,这样图形的填充方面将是其填充位置的变量value
中melt
列中的值的条。 R将其解释为堆积的条形图。
答案 0 :(得分:2)
默认情况下,melt
将'wide'格式更改为'long'格式,并为列名和对应于'wide'格式的列的值创建两个列'variable'和'value'相应地。根据{{1}}的用法是
melt(data,...,na.rm = FALSE,value.name =“ value”)
我们可以将?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
或使用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