Малювання декількох барплотів на графіку в R [закрито]


12

Я хотів би побудувати чотири барплоти на одному графіку в Р. Я використав наступний код. Ось як можна зберегти легенду на вершині графіка, зокрема легенда повинна бути між 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
Brandon Bertelsen

@Kevin Це дійсний Q; той факт, що R має інтерфейс командного рядка, не означає, що будь-яке питання R є програмуванням.

@Brandon Sure; ви можете використовувати запропоновані зміни в майбутньому, ви також заробите 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"))

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


@Brandon - Це моя нова місія. Ці питання є кращими посиланнями для інших, якщо вони містять приклади бази, ggplot2 та решітки.
Іран

@Joran: Фантастичний.
samarasa

Як перейменувати мітку на "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.