Разделите график на части сверху и снизу для 3 факториала - PullRequest
3 голосов
/ 15 апреля 2011

Мне нужно распределить биомассу над и под землей по 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))

а как насчет 3 факторов?

Я совершенно новичок в системе построения решеток, поэтому любая идея приветствуется

Всего наилучшего

Marco

1 Ответ

6 голосов
/ 15 апреля 2011

Вот один из способов сделать это:

  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)

enter image description here

...