2017-06-29 4 views
1

Ich habe ein paar Daten. Ich möchte es grafisch darzustellen ein gestapeltes Diagramm verwenden, aber mit jedem Stapel zu verschiedenen Variablen verweisen:ggplot2: Kombinieren von gestapelten Plots durch Identifizieren jedes Stapels durch verschiedene Variablen

id <- c(1:10) 
date <- c("May","May","May","May","May", 
      "June","June","June","June","June") 
locations <- c("A1a","A1b","B1","A2","B2", 
       "A1","B1","A2a","A2b","B2") 
data <- c(220, 350, 377, 655, 740, 
      615, 760, 480, 179, 560) 
df <- data.frame(id,date,locations,data) 

library(ggplot2) 

Das war so nah wie ich bekommen konnte.

ggplot(df, aes(x=date, y=data, fill=locations)) + 
    geom_bar(stat="identity", position = "stack") 

Ich möchte A1a mit B1 gestapelt, gestapelte A1b mit B1 und A2 mit B2 gestapelt nebeneinander für den Monat Mai; und A1 gestapelt mit B1, A2a gestapelt mit B2 und A2b gestapelt mit B2 für Juni. Jeder Monat hat 3 Balken und jeder Balken ist ein Stapel von 2 Variablen, die ich angegeben habe. Danke im Voraus.

+0

Es gibt keine A1a, A1b, A2a, A2b in Ihrem df. Außerdem nehme ich an, Sie wollen y = Daten, nicht y = Datum. –

+0

@EricWatt Opps vergaß, meinen Code zu aktualisieren. – phaser

Antwort

1

Ich bin mir nicht sicher, ob ich Ihre Frage richtig verstanden habe.
Hier ist ein Versuch, eine Lösung zu finden. Hoffe es kann dir helfen.

id <- c(1:10) 
date <- c("May","May","May","May","May", 
      "June","June","June","June","June") 
locations <- c("A1a","A1b","B1","A2","B2", 
       "A1","B1","A2a","A2b","B2") 
data <- c(220, 350, 377, 655, 740, 
      615, 760, 480, 179, 560) 
df <- data.frame(id,date,locations,data) 

df$date <- factor(df$date, levels=c("May","June")) 
df1 <- cbind(df[c(1,3,2,3,4,5,6,7,8,10,9,10),], 
      grp=factor(rep(c(1:3),each=2))) 

library(ggplot2) 
ggplot(df1, aes(x=grp, y=data, fill=locations)) + 
    geom_bar(stat="identity", position = "stack")+ 
    facet_grid(.~date) 

enter image description here

Verwandte Themen