如何在一个数据框中绘制带有填充条的多个堆积条形图

时间:2014-02-06 22:48:51

标签: r ggplot2

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

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

enter image description here

数据框具有以下列的列:row,col,n,f.L1,f.L2,f.L3,f.L4,f.ad。

行显示正方形所在的行(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的百分比。

提前致谢!

2 个答案:

答案 0 :(得分:0)

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)

enter image description here

答案 1 :(得分:0)

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~.)

enter image description here