2013-08-06 6 views
9

, jakie napotykają niewielki problem podczas tworzenia wykres bar w R. Istnieją 3 zmienne:R bar działka z dwóch grup, z których jedna jest ułożone

a <- c(3,3,2,1,0) 
b <- c(3,2,2,2,2) 
c <- 0:4 

Pasek wykres powinien być pogrupowane "a" i "c", a "b" powinny być ułożone na "a". Robi grupowanie i układanie oddzielnie jest prosta:

barplot(rbind(a,c), beside=TRUE) 
barplot(rbind(a,b), beside=FALSE) 

Jak można to zrobić zarówno na raz na jednym wykresie?

+0

Może to pomoże: http://stackoverflow.com/questions/1801064/how-to-separate- dwa-plots-in-r –

Odpowiedz

10

Rozwiązanie to wymaga myślenia o tym, jak barplot rysuje ułożone bary. Zasadniczo musisz podać kilka danych z 0 wartościami w odpowiednich miejscach. Z danych:

mydat <- cbind(rbind(a,b,0),rbind(0,0,c))[,c(1,6,2,7,3,8,4,9,5,10)] 
barplot(mydat,space=c(.75,.25)) 

barplot

Aby zobaczyć, co się dzieje pod maską, spojrzeć na mydat:

> mydat 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
a 3 0 3 0 2 0 1 0 0  0 
b 3 0 2 0 2 0 2 0 2  0 
    0 0 0 1 0 2 0 3 0  4 

Tutaj jesteś kreślenia każdy pasek z trzema wartościami (wartość a, wartość b, wartość c). Każda kolumna macierzy mydat jest prętem, posortowanym tak, że pręty ab są odpowiednio przeplatane za pomocą c słupków. Możesz bawić się spacjami i kolorem.

Widocznie wersje tego zostały omówione na R-pomoc varioustimeswithoutgreatsolutions, więc mam nadzieję, że jest to pomocne.

+0

+1 bardzo ładnie wykonane! – Arun

+0

Tak, właśnie tego chciałem. Dzięki. Czy masz szansę pokazać mi ekwiwalent ggplota? – Forzaa

+0

@Forzaa Właściwie nie używam ggplot, więc nie mogę tam pomóc. – Thomas

0

Spróbuj lattice lib:

library("lattice") 
MyData <- as.data.frame(Titanic) 

barchart(Freq ~ Survived | Age * Sex, groups = Class, data = MyData, 
     auto.key = list(points = FALSE, rectangles = TRUE, space 
     = "right", title = "Class", border = TRUE), xlab = "Survived", 
     ylim = c(0, 800)) 

output

Jak widać grupowanie i ploting odbywa się jednocześnie.

Proszę również zobaczyć: https://stat.ethz.ch/pipermail/r-help/2004-June/053216.html

+0

W tym przykładzie nie ma ułożenia jeden na drugim, więc nie naprawdę nie osiągnę mojego celu. – Forzaa

Powiązane problemy