2010-06-09 18 views
12

ho i seguenti dati:raggruppate grafico a barre

bin groupname total_dist 
0 rowA 377 
0 rowA 306.6 
0 rowB 2.1 
0 rowB 110.6 
1 rowA 918.1 
1 rowA 463.2 
1 rowB 798.2 
1 rowB 1196 
2 rowA 1295.1 
2 rowA 1269.1 
2 rowB 698 
2 rowB 1022.1 

Utilizzando R, voglio fare un grafico a barre in cui v'è un bar per la rigaA e un bar per rigaB per ogni bin. Posso raggruppare total_dist di uno o dell'altro (plot(total_dist~bin) o plot(total_dist~groupname)). Ma non riesco a capire come combinarli.

voglio qualcosa che sembra simile a questo esempio: example grouped bar graph

+0

potrebbe specificare meglio? nell'esempio grafico inferiore, EUL, PES, EFA ... sono i bidoni? l'esempio ha 2 barre per gruppo ... "due barre" corrisponde a rowA/rowB, groups a? abbiamo due valori per rigaX, quindi abbiamo 4 valori per bin, quindi dovremmo avere 4 barre per "gruppo"? (invece di 2 dell'esempio ..) ?? per favore potresti disegnare come lo vuoi davvero? – ShinTakezou

+0

devi "raggruppare" i doppi (rigaA rigaA, rigaB rigaB) in un singolo valore in modo da avere 2 barre per cestino invece di 4? e come si "combina" total_dist nello stesso bin e con lo stesso groupname (sum? mean?) – ShinTakezou

+0

@ShinTakezou: Se i miei dati sono stati mappati al grafico di esempio, bin => group e groupname => year. Quindi bin sarebbe l'etichetta dell'asse x e il groupname corrisponderebbe alla colorazione della colonna. – dnagirl

risposta

28

Ecco una soluzione classica. (Supponendo tua dataframe è chiamato df)

data <- tapply(df$total_dist, list(df$groupname,df$bin), sum) 

barplot(data,beside=T,col=c("#ee7700","#3333ff") 
,main="European Parliament Elections",xlab="Group",ylab="Seats") 

legend(locator(1),rownames(data),fill=c("#ee7700","#3333ff")) 

e qui sta soluzione con ggplot2

library(ggplot2) 
qplot(factor(bin),data=df,geom="bar",fill=groupname,weight=total_dist,position="dodge", 
main = "European Parliament Elections", xlab="Group",ylab="Seats") 

alt text

+0

grazie mille! – dnagirl

+1

uso freddo del localizzatore – John

Problemi correlati