在R中创建分组堆叠条的简单方法

时间:2016-01-25 16:19:36

标签: r plot

我有两个3x2矩阵A和B:

A:

          n2  n3
Part1     1   5
Part2     2   6
Part3     3   7

B:

          n2  n3   
Part1     5   1 
Part2     6   2   
Part3     7   3  

并且我想基于列n2,n3为A和B创建堆叠条,然后对堆叠条进行分组,使得A和n的n2并排组合在一起并且对于n3相同。这就是我的尝试:

  d1 <- read.csv("A.csv", header=T, dec=".",sep = " ")
  d1 <- subset(d1, select = c(n2, n3))

  d2 <- read.csv("B.csv", header=T, dec=".",sep = " ")
  d2 <- subset(d2, select = c(n2, n3))

  d <- cbind(d1[,1],d2[,1],d1[,2],d2[,2])

  barplot(t(d), beside=T, ,col=c("lawngreen","firebrick","deepskyblue"),
          space=c(0,0,0.2,0))

它产生: enter image description here

哪些条形图被分组,但没有堆叠,颜色也被错误使用。当我将条形图更改为以下内容时,会生成以下图:

   barplot(t(d), col=c("lawngreen","firebrick","deepskyblue"), 
           space=c(0,0,0.2,0))

enter image description here

错误地堆叠哪些条形图并错误地分组。如果你帮我解决这个问题,我很感激,因为我是R:/

的新手

1 个答案:

答案 0 :(得分:1)

barplot()使用输入矩阵的列对条形图进行分组。使用它作为数据:

> (d <- matrix((1:7)[-4],ncol=2)[,c(1,2,2,1)])
     [,1] [,2] [,3] [,4]
[1,]    1    5    5    1
[2,]    2    6    6    2
[3,]    3    7    7    3

您可以从之前的代码中取消转置:

barplot(d, col=c("lawngreen","firebrick","deepskyblue"), space=c(0,0,0.2,0))

stacked bar plot