Рисование нескольких графиков на графике в R [закрыто]


12

Я хотел бы построить четыре барплота на одном графике в R. Я использовал следующий код. Здесь, как можно держать легенду на вершине графика, в частности, легенда должна быть между 2 и 3 столбцами. Я тоже пробовал, par(mar=c(4.1,4.1,8.1,4.1)но безуспешно. Более того, я тоже пытался бежать legend()за вторым барплотом, но бесполезно. Легенда для всех четырех барплотов. Пожалуйста, помогите мне в этом.

    par(mfrow=c(1,4))
    barplot(t(A), beside=T, ylim=c(-100,100),..)
    barplot(t(B), beside=T, ylim=c(-100,100),..)
    barplot(t(C), beside=T, ylim=c(-100,100),..)
    barplot(t(D), beside=T, ylim=c(-100,100),..)
    legend(...)

1
Кто-то пометил это R
Брэндон Бертельсен

@Kevin Это правильный Q здесь; тот факт, что R имеет интерфейс командной строки, не означает, что любой вопрос R является программным.

@ Брэндон Уверен; Вы можете использовать предложенные изменения в будущем, вы также получите 2 повторения за принятое предложение.

Ответы:


17

Ответ д-ра Майка хороший, но я подумал, что смогу предложить решения, использующие преимущества огранки (или решетчатости) ggplot2и lattice. Сначала немного подготовьте данные:

mydata$id <- 1:nrow(mydata)
dat <- melt(mydata,id.vars = "id")

и тогда мы можем сделать следующее ggplot2:

ggplot(dat,aes(x=factor(id), y = value)) + 
    facet_wrap(~variable) +
    geom_bar(aes(fill = factor(id)))

введите описание изображения здесь

и используя lattice:

barchart(~value|variable,group = factor(id),data=dat,
         key = simpleKey(text = as.character(1:5),
                rectangles = TRUE,points = FALSE,space = "right"))

введите описание изображения здесь


@ Брэндон - это моя новая миссия. Эти вопросы являются лучшими ссылками для других, если они содержат примеры из base, ggplot2 и lattice.
Джоран

@Joran: Фантастика.
Самараса

Как переименовать метку на «factor (id)» в версии ggplot?
News_is_Selection_Bias

11

Я думаю, что самое простое решение - использовать присущие команде barplot возможности для решения вашей проблемы. Следующий код делает то, что я понимаю, что вы хотите сделать.

mydata <- data.frame(Barplot1=rbinom(5,16,0.6), Barplot2=rbinom(5,16,0.25),
                     Barplot3=rbinom(5,5,0.25), Barplot4=rbinom(5,16,0.7))
barplot(as.matrix(mydata), main="Interesting", ylab="Total", beside=TRUE, 
        col=terrain.colors(5))
legend(13, 12, c("Label1","Label2","Label3","Label4","Label5"), cex=0.6, 
       fill=terrain.colors(5))

участок

Надеюсь, что это ответ на ваш вопрос.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.