2016-10-02 1 views
1

je l'dataframe suivante:Combiner barres empilées et lignes dans un même graphique avec des variables

library(rsdmx) 
library(dplyr) 
library(countrycode) 

dt<-as.data.frame(readSDMX("http://widukind-api.cepremap.org/api/v1/sdmx/IMF/data/IFS/..Q.BFPA-BP6-USD")) 
AP<-rename(dt, Country=WIDUKIND_NAME, Year=TIME_PERIOD,A.PI.T=OBS_VALUE)  
AP<-AP[c("Country","REF-AREA","Year","A.PI.T")] 
AP$Country<-countrycode(AP$`REF-AREA`, "imf","iso3c") 
AP$A.PI.T<-as.numeric((as.character(AP$A.PI.T))) 
AP$Country[which(AP$`REF-AREA` == 163)] <- "EURO" 
AP$Country[which(AP$`REF-AREA` == 967)] <- "RKS" 
AP$Country[which(AP$`REF-AREA` == 355)] <- "CUW+SMX" 
AP$Country<-as.factor(AP$Country) 
AP$v1<-AP$A.PI.T/2 
AP$v2<-AP$v1 

str(AP) 

'data.frame': 11452 obs. of 6 variables: 
$ Country : Factor w/ 142 levels "ABW","AFG","ALB",..: 2 2 2 2 2 2 2 2 2 2 ... 
$ REF-AREA: Factor w/ 142 levels "512","299","258",..: 1 1 1 1 1 1 1 1 1 1 ... 
$ Year : chr "2008-Q2" "2008-Q3" "2008-Q4" "2009-Q1" ... 
$ A.PI.T : num -113146 -321591 -1000741 16685590 540591 ... 
$ v1  : num -56573 -160796 -500370 8342795 270295 ... 
$ v2  : num -56573 -160796 -500370 8342795 270295 ... 

Comme vous le voyez, j'ai trois variables numériques et une autre variable Year censé saisir les dates. En attendant, il y a une variable catégorique Country.

Mon objectif est de créer des graphiques pour CHAQUE catégorie dans Country.

Le type de graphique que je veux est un mélange de barre empilée et un graphique de type de ligne, où je veux avoir une option pour pré-spécifier la plage de dates, par exemple je veux de 2012-T1 à 2015Q3. Pour vous donner une meilleure idée de la façon dont le tableau devrait ressembler, je l'ai fait un exemple dans Excel, pour la Euro dans Country

enter image description here

Dans le cas idéal, je veux exporter tous les tableaux qui devraient être créé pour chaque niveau dans Country dans un formulaire pratique où les utilisateurs non-R peuvent utiliser et explorer.

Répondre

0

Voulez-vous quelque chose comme ce qui suit (affiché uniquement pour l'EURO et UKR):

library(reshape2) 
df <- melt(AP, id=1:3) 
library(ggplot2) 
ggplot(df[df$Country %in% c('EURO', 'UKR'),], aes(Year, value, fill=variable)) + 
    geom_bar(stat='identity') + 
    theme(axis.text.x = element_text(angle=90, vjust = 0.5)) + 
    facet_wrap(~Country, scales='free') 

enter image description here

+0

Oui, mais pour ajouter la ligne comme dans l'image et préciser la plage des dates sont important. – msh855