2017-10-06 2 views
0

Je suis débutant en programmation R, en explorant ggplot. J'essaye de tracer le graphique à barres empilé pour montrer le revenu trimestriel de 3 ans pour plusieurs pays. J'utilise les données de https://www.ibm.com/communities/analytics/watson-analytics-blog/sales-products-sample-data/Plusieurs colonnes sur les graphiques à barres empilées sur l'axe des x

mydata <- read.csv("~/Downloads/WA_Sales_Products_2012-14.csv") 
library(dplyr) 
qtrSales <- mydata %>% 
group_by(mydata$Retailer.country, mydata$Year, mydata$Quarter) %>% 
summarize(Rev=sum(Revenue)) %>% 

qtrSales <- data.frame(qtrSales) 
colnames(qtrSales) <- c("Country", "Year", "Qtr", "Revenue") 

library(ggplot2) 
ggplot() + geom_bar(aes(y=qtrSales$Revenue, x = qtrSales$Year, 
fill=qtrSales$Qtr), data=qtrSales, stat="identity") 

ci-dessus ggplot me donne enter image description here ce que je veux est d'avoir 3 barres pour chaque année regroupés pour chaque pays. Quelqu'un peut-il conseiller comment y parvenir?

+0

Avez-vous besoin de regrouper par quartiers aussi? Il ya 21 pays et empilés geom_bar aura l'air terrible, je suggère d'utiliser autre chose – PoGibas

+1

vous pourriez ajouter l'année dans un facet_wrap, de cette façon vous seriez en mesure de voir le trimestre de croissance. Ce ne sera pas très lisible si vous avez groupé des barres, mais si vous insistez, regardez dans la position = "esquive" – User632716

+0

Merci de votre retour. Pardonnez mon manque de connaissances, que suggérez-vous d'autre? Je suppose que vous avez raison à ce sujet avec les 21 pays. Si je change de scénario, pour limiter 5 ou 10 pays, cela peut-il être fait en fonction de mes besoins initiaux? –

Répondre

1

Ici, je mets Quarter au lieu de Year sur l'axe des x, sinon vous auriez besoin d'utiliser des facettes.

colnames(mydata)[1] <- "Country" 
library(ggplot2) 
ggplot(mydata, aes(Quarter, Revenue, fill = Country)) + 
    geom_bar(stat = "identity", position = "dodge") + 
    scale_x_discrete(limits = unique(mydata$Quarter)) + 
    theme(legend.position = "bottom") + 
    guides(fill = guide_legend(nrow = 2)) 

enter image description here

+0

@ssjsk Y at-il quelque chose d'autre que vous voulez afficher/ajuster? – PoGibas

+1

génial, merci pour celui-ci, je vais explorer plus en utilisant la facette afin d'en savoir plus :-) appréciez votre réponse rapide. –

+0

@ssjsk heureux de vous aider :-) – PoGibas