如何使用ggplot绘制堆积条?

Leg*_*end 9 statistics r ggplot2

我一直在经历提供这些示例页面,但由于某些原因无法找到这样做的正确方法.

我有一些这样的数据:

      Group Member Percentage
 [1,] "1"   "A"    "60"      
 [2,] "1"   "A"    "20"      
 [3,] "1"   "A"    "20"      
 [4,] "1"   "B"    "80"      
 [5,] "1"   "B"    "5"       
 [6,] "1"   "B"    "5"       
 [7,] "1"   "B"    "5"       
 [8,] "2"   "C"    "50"      
 [9,] "2"   "C"    "50"      
[10,] "2"   "D"    "25"      
[11,] "2"   "D"    "25"      
[12,] "2"   "D"    "25"      
[13,] "2"   "D"    "20"      
[14,] "2"   "D"    "5"   
Run Code Online (Sandbox Code Playgroud)

并可以使用以下命令创建:

a = c(1,1,1,1,1,1,1,2,2,2,2,2,2,2)
b = c("A","A","A","B","B","B","B","C","C","D","D","D","D","D")
c = c(60,20,20,80,5,5,5,50,50,25,25,25,20,5)
dat = data.frame(Group=a, Member=b, Percentage=c)
ggplot(dat, aes(x=Member, y=Percentage)) + geom_bar(stat="identity", position="dodge", fill="white", colour="black")
Run Code Online (Sandbox Code Playgroud)

最后一行给出了以下情节:

在此输入图像描述

我真正想要的是将一个组中的每个条连接到一个单独的条并将百分比表示为相同条的分数(每个组中的每个成员用一个条形图,每个条具有百分比作为它们颜色).所以我使用了以下内容:

ggplot(dat, aes(x=Member, y=Percentage)) + geom_bar(stat="identity", colour="white")
Run Code Online (Sandbox Code Playgroud)

得到了这个:

在此输入图像描述

但现在我无法正确地获得颜色.我想要的东西与下面给出的东西完全相同,但我无法理解如何做到这一点.有关如何做到这一点的任何建议?

在此输入图像描述

Leg*_*end 11

好吧终于搞定了!欢呼!如果其他人有兴趣,这是完整的代码:

a = c(1,1,1,1,1,1,1,2,2,2,2,2,2,2)
b = c("A","A","A","B","B","B","B","C","C","D","D","D","D","D")
c = c(60,20,20,80,5,5,5,50,50,25,25,25,20,5)
dat = data.frame(Group=a, Member=b, Percentage=c)
ggplot(dat, aes(x=Member, y=Percentage, fill=Percentage)) + geom_bar(stat="identity", colour="white")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

以及评论中@joran(非常感谢!)的建议:

ggplot(dat, aes(x=Member, y=Percentage, fill=Percentage)) + geom_bar(stat="identity", colour="white")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 做得好!我刚要发布这个...请注意,如果你想要一个百分比的离散色标,而不是一个连续的色标,只需使用`fill = factor(Percentage)`. (2认同)
  • 当然,`+ labs(fill ="填充标签")` (2认同)

Rom*_*rik 5

你很接近。尝试

ggplot(dat, aes(x=Member, y=Percentage, fill = factor(Percentage))) + geom_bar(stat = "identity")
Run Code Online (Sandbox Code Playgroud)

其中产生

在此处输入图片说明