Построение нескольких групп боксов рядом в R - PullRequest
10 голосов
/ 12 октября 2011

Я пытаюсь построить два бокса на одном графике, каждый в одной категории. Я могу сгенерировать блокпосты по отдельности, но тупик, когда я пытаюсь вывести их на один и тот же график.

Вот что у меня есть:

a<-matrix(nrow=100,ncol=3,data=runif(300,max=2))
b<-matrix(nrow=100,ncol=3,data=runif(300,max=1))
colnames(a)<-c("case 1","case 2","case 3")
colnames(b)<-c("case 1","case 2","case 3")
boxplot(cbind(a,b))

На этом графике получено 6 коробок, сначала 3 для a, затем 3 для b.

Есть ли какая-то хитрость / простой вариант, который мне не хватает, который даст мне первое значение для a и b, затем второе и, наконец, третье множество значений, все из которых построены таким образом, что есть только три галочки на оси x, по одному для каждого из наборов?

Любые указатели высоко ценятся,

Иэн

1 Ответ

8 голосов
/ 12 октября 2011
boxplot(a, at = 0:2*3 + 1, xlim = c(0, 9), ylim = range(a, b), xaxt = "n")
boxplot(b, at = 0:2*3 + 2, xaxt = "n", add = TRUE)
axis(1, at = 0:2*3 + 1.5, labels = colnames(a), tick = TRUE)

Обратите внимание на параметр ylim = range(a, b). Масштаб графика определяется первой командой, но если b содержит значения вне диапазона значений в a (не в этом случае, но попытайтесь поменять местами a и b), они будут лежать вне графика. Вот почему в целом вы должны указать здесь ylim.

Вы также можете установить tick = FALSE в команде axis(), я думаю, что это лучше. Если вам не нравится пробел между группами, используйте 0:2*2 вместо 0:2*3 и соответственно измените xlim.

...