拆分上下部分的图,进行3阶段条形图绘制

Mar*_*rco 3 plot r bar-chart lattice

我需要针对3个因素绘制地上和地下生物量.对于每个生物量,我能够使用来自格子的条形图绘制它,但是,我不知道绘制其中的两个,即正面的地上生物量,以及Y轴的地理部分的地下生物量.这是我的数据的测试代码,其中A,B,C是全因子因子:

library(lattice)
above <- runif(108)
below <- runif(108)
A <- rep(c("ab", "bc", "cd"), each=36)
B <- rep(1:3, 36)
C <- gl(3, 4, 108, c(30, 60, 90))

barchart(above~A|B+C)
barchart(below~A|B+C)

#This is what I used to do for two factors using barplot
par(mfrow=c(2, 1), mai=c(0, 1, 0.5, 0.5))
agg.abv <- aggregate(above, by=list(A, B), mean)
abv <- matrix(agg.abv[, 3], ncol=nlevels(A), dimnames=list(levels(A), levels(B)))
agg.bel <- aggregate(below, by=list(A, B), mean)
bel <- matrix(agg.bel[, 3], ncol=nlevels(A), dimnames=list(levels(A), levels(B)))
barplot(abv, beside=T, ylim=c(0, 1))
barplot(abv, beside=T, ylim=c(1, 0))
Run Code Online (Sandbox Code Playgroud)

但3个因素怎么样?

我对格子绘图系统很新,所以,任何想法都是非常受欢迎的

祝一切顺利

马尔科

And*_*rie 6

这是一种方法:

  1. 您的"上方"和"下方"值应位于单个变量中
  2. "低于"值应为负数.
  3. 将origin = 0参数包含在条形图中

例如:

df <- data.frame(
    x <- runif(108, min=-1, max=1),
    A = rep(c("ab", "bc", "cd"), each=36),
    B = rep(1:3, 36),
    C = gl(3, 4, 108, c(30, 60, 90))
)

barchart(x~A|B+C, data=df, origin=0)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述