R:有两组的条形图,其中一组是堆叠的

For*_*zaa 9 grouping r bar-chart

我在R中创建条形图时遇到了一个小问题.有3个变量:

a <- c(3,3,2,1,0)
b <- c(3,2,2,2,2)
c <- 0:4
Run Code Online (Sandbox Code Playgroud)

条形图应按"a"和"c"分组,"b"应堆叠在"a"的顶部.单独进行分组和堆叠非常简单:

barplot(rbind(a,c), beside=TRUE)
barplot(rbind(a,b), beside=FALSE)
Run Code Online (Sandbox Code Playgroud)

如何在一个图表中同时执行这两个操作?

Tho*_*mas 10

这样做需要考虑如何barplot绘制堆积条.基本上,您需要在适当的位置为其提供一些0值的数据.使用您的数据:

mydat <- cbind(rbind(a,b,0),rbind(0,0,c))[,c(1,6,2,7,3,8,4,9,5,10)]
barplot(mydat,space=c(.75,.25))
Run Code Online (Sandbox Code Playgroud)

barplot

要了解幕后发生的事情,请查看mydat:

> mydat
  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
a    3    0    3    0    2    0    1    0    0     0
b    3    0    2    0    2    0    2    0    2     0
     0    0    0    1    0    2    0    3    0     4
Run Code Online (Sandbox Code Playgroud)

在这里,您将使用三个值(值a的值b,值的值c)绘制每个条形图.mydat矩阵的每列是一个条,经过排序,以便ab条适当地散布在c条中.您可能想要使用间距和颜色.

显然,这个版本已经在讨论R-帮助各种 时间 没有 的解决方案,所以希望这是有帮助的.