【问题标题】:how to plot multiple number of stacked bar charts with filled-in bars from one data frame如何从一个数据框中绘制多个带有填充条的堆叠条形图
【发布时间】:2014-02-06 22:48:50
【问题描述】:

我有一个数据框,其中包含 96 方板中每个方格的信息。

它看起来像这样......

数据框具有如下命名的列:row、col、n、f.L1、f.L2、f.L3、f.L4、f.ad。

Row 显示正方形所在的行 (A~H)。 Col 显示正方形所在的列 (1~12)。 n 是每个方格中蠕虫的数量。 f.L1、f.L1、f.L2、f.L3、f.L4 和 f.ad 是蠕虫所处的不同生长阶段。这些列包含的人口百分比(以十进制数表示)处于那个特定阶段。

我正在尝试制作一个堆积条形图...显示一个人口条形图,其中填充了蠕虫所处不同阶段的百分比。因此,每行最好有 8 个不同的图表(A ~H),每个图表显示该行中每一列的 12 个不同的条 (1~12),每个条都填充了来自 f.L1、f.L2、f.L3、f.L4 和 f.ad 的百分比。

提前致谢!

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:
    x<-data.frame(row=rep(c("A","B","C","D","E","F","G","H"),each=12), col=rep(c(1:12),8), n=100, l1=runif(96),l2=runif(96),l3=runif(96),l4=runif(96),l5=runif(96),l6=runif(96))
    library(reshape2)
    y<-melt(x,id.var=c("row","col","n"))
    library(ggplot2)
    
    ggplot(y, aes(as.factor(col),value, fill=variable))+geom_bar(stat="identity",position="stack")+facet_grid(~row)
    

    【讨论】:

      【解决方案2】:
      require(reshape2)
      require(ggplot2)
      
      ## Generate a toy data, with 3 rows, 6 columns, 5 squares
      set.seed(123)
      nr <- 3
      nc <- 6
      ns <- 5
      x <- data.frame(row=rep(LETTERS[1:nr],each=nc),col=factor(rep(1:nc,nr)),f.L=matrix(1:(nr*nc*ns),ncol=5))
      
      ## Now continue with the "toy" data or apply your real data
      x.melt <- melt(x,id=c("row","col"))
      head(x)
      head(x.melt)
      
      ## > head(x)
      ##   row col f.L.1 f.L.2 f.L.3 f.L.4 f.L.5
      ## 1   A   1     1    19    37    55    73
      ## 2   A   2     2    20    38    56    74
      ## 3   A   3     3    21    39    57    75
      ## 4   A   4     4    22    40    58    76
      ## 5   A   5     5    23    41    59    77
      ## 6   A   6     6    24    42    60    78
      ## > head(x.melt)
      ##   row col variable value
      ## 1   A   1    f.L.1     1
      ## 2   A   2    f.L.1     2
      ## 3   A   3    f.L.1     3
      ## 4   A   4    f.L.1     4
      ## 5   A   5    f.L.1     5
      ## 6   A   6    f.L.1     6
      ## >
      
      ggplot(x.melt, aes(x=col,y=value, fill=variable)) + 
        geom_bar(position="fill",stat="identity") +
        facet_grid(row~.)
      

      【讨论】:

        猜你喜欢
        • 2020-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-07
        • 1970-01-01
        • 2023-03-28
        • 2012-10-21
        相关资源
        最近更新 更多