2015-05-01 16 views
9

Wziąłem ten przykład od here:Czy można umieścić spację między stosami w sztangi ggplot2?

DF <- read.table(text="Rank F1  F2  F3 
1 500 250 50 
2 400 100 30 
3 300 155 100 
4 200 90  10", header=TRUE) 

library(reshape2) 
DF1 <- melt(DF, id.var="Rank") 

library(ggplot2) 
ggplot(DF1, aes(x = Rank, y = value, fill = variable)) + 
geom_bar(stat = "identity") 

Czy jest możliwe aby utworzyć skumulowany słupkowy taki jak na poniższym wykresie używając ggplot2? Nie chcę różnicować stosów według różnych kolorów.

enter image description here

EDIT: Na podstawie wypowiedzi Pascala,

ggplot(DF1, aes(x = Rank, y = value)) + 
geom_bar(stat = "identity",lwd=2, color="white") 

enter image description here

mam jeszcze białe granic dla barów.

+2

W 'geom_bar', można dodać inne argumenty, takie jak' color' i 'lwd'. –

+0

Kolor nie jest problemem, przestrzeni między stosami nie można rozwiązać za pomocą 'lwd' – Soheil

+0

Czy próbowałeś przynajmniej? –

Odpowiedz

6

To jest najbliższy, jaki mógłbym dostać do Twojej przykładowej postaci. Nie ma większego znaczenia poza tym, co już posortowano, ale kładzie mniejszy nacisk na białe kreski na szarym tle.

library(ggplot2) 
p <- ggplot(DF1, aes(x = Rank, y = value, group = variable)) 
p <- p + geom_bar(stat = "identity", position = "stack", lwd = 1.5, 
        width = 0.5, colour = "white", fill = "black")   
p <- p + theme_classic() 
p <- p + theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) 
p 

która produkuje:

Jeśli chcesz zachować szare tło można dowiedzieć się dokładnie, co odcień szarości jest i użyć tego koloru dla linii podczas zdejmowania siatki tła (to nie jest właściwy odcień).

p <- ggplot(DF1, aes(x = Rank, y = value)) 
p <- p + geom_bar(stat = "identity", position = "stack", lwd = 1.5, 
        width = 0.5, colour = "grey", fill = "black")   
p <- p + theme(panel.grid = element_blank()) 
p 

Problem takiego rozwiązania jest to, że bardzo małe grupy nie będzie widoczne, (na przykład, gdy Stopień = 4 zmienna F3 = 10, to mała wartość jest całkowicie zakryty przez biały pasek konturu).

Dane próbki:

DF1 <- structure(list(Rank = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 
3L, 4L), variable = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L), .Label = c("F1", "F2", "F3"), class = "factor"), 
    value = c(500L, 400L, 300L, 200L, 250L, 100L, 155L, 90L, 
    50L, 30L, 100L, 10L)), row.names = c(NA, -12L), .Names = c("Rank", 
"variable", "value"), class = "data.frame") 
Powiązane problemy