【问题标题】:simple way to create grouped stacked bar in R在 R 中创建分组堆叠条的简单方法
【发布时间】:2016-01-25 16:19:36
【问题描述】:

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

答:

          n2  n3
Part1     1   5
Part2     2   6
Part3     3   7

乙:

          n2  n3   
Part1     5   1 
Part2     6   2   
Part3     7   3  

我想根据列 n2、n3 为 A 和 B 创建堆叠条,然后对堆叠条进行分组,使得 A 的 n2 和 B 并排分组在一起,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))

它会产生:

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

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

错误堆叠和错误分组的条形图。如果您能帮我解决这个问题,我将不胜感激,因为我是 R 新手:/

【问题讨论】:

    标签: r plot


    【解决方案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))
    

    【讨论】:

    • 啊哈太棒了。一个简单的问题,有没有办法将 n2 和 n3 分配给 x 轴?
    • 您可以在 barplot 中设置names.arg,但它会在一个条形图下方居中,而不是在条形图组下方。为了使标签正确居中,您可能会更乐意重做 ggplot2 中的绘图
    • 但我不知道 ggplot :/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2019-04-08
    相关资源
    最近更新 更多