Afin de faciliter la poursuite du TD lancer le code ci-dessous afin de charger ou installer les packages.
# ----- Load/Install Packages
packages<-c("leaflet","rgdal","dygraphs","xts","highcharter","googleVis","tidyr","dplyr")
new.packages <- packages[!(packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
lapply(packages, require, character.only = TRUE)
Les projets RStudio facilitent la division de votre travail en plusieurs sessions, chacunes avec son propre répertoire et espace de travail, son historique et ses documents sources.
Pour créer un nouveau projet, utiliser la commande Créer un projet (disponible dans le menu Projets et dans la barre d’outils globale)
Dans le dossier TP_Rshiny
data
rawprocessedLes données sont disponibles ici Télécharger et placer l’ensemble des données dans le dossier data/raw
BM_IRIS shapefile iris Métropole BordelaiseBase_client_BDX.csv extrait base clientèle eau télérelevéTLRV.RData consommation journalière d’un panel de client du 01/01/2014 au 01/01/2017INSEE.csv données INSEE (2014) fournissant des informations sur les habitants à l’echelle de l’irisjours_feries.csv table avec date des jours fériés en Francevacances_scolaires_FR.csv table avec période de vacances scolaires françaises pour la période concidéréeLe shapefile, ou “fichier de formes” est un format de fichier pour les systèmes d’informations géographiques (SIG). Il contient toute l’information liée à la géométrie des objets décrits, qui peuvent être :
Son extension est classiquement SHP, et il est toujours accompagné de deux autres fichiers de même nom, et d’extensions :
Placer le dossier BM_IRIS dans le dossier data/raw présent à la racine du Rprojet TD_shiny. Ce dossier est un shapefile, il dessine des contours de zone du territoire bordelais à l’echelle de l’iris.
Afin d’utiliser ce fichier sur des fonds de cartes nous allons le charger et le transformer en objet SpatialPolygonsDataFrame utilisable par R.
# ----- Convert shape coordinate to Web Mercator
# ----- charge les fichiers shape en un objet SpatialPolygonsDataFrame
dat_IRIS<-readOGR(dsn="data/rawData/BM_IRIS", layer="BM_IRIS",verbose = FALSE)
# ----- Définit la méthode de conversion des coordonnées GPS : Lambert93 => Web Mercator (WGS84)
projIris <- sp::CRS('+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0')
# ----- Transforme les coordonnées de tous les objets présents dans le fichier shape
contourIris <- sp::spTransform(dat_IRIS,projIris)
rm(list = c("dat_IRIS","projIris"))
# ----- Sauvegarde le fichier shape traité
save(contourIris,file = "data/processedData/contourIris.Rdata")
L’objet contourIris est une liste composée de :
@data : un data frame avec des informations sur chacun des polygones (voir tableau ci-après)@polygons : une liste de polygones représentant les formes des iris et leurs coordonnéesLa première ligne de contourIris@data correspond au premier element de la liste contourIris@polygons.
Le package Dygraphs fournit une interface avec la bibliothèque de graphique JavaScript Dygraphs. Elle fournit de riches outils pour la représentation des données de séries chronologiques en R, notamment:
library(dygraphs)
lungDeaths <- cbind(mdeaths, fdeaths)
plot(lungDeaths)

library(dygraphs)
lungDeaths <- cbind(mdeaths, fdeaths)
dygraph(lungDeaths)
xtsxts ou Extencible Time Series est un package R qui fournit une classe de séries chronologiques extensibles, permettant une gestion uniforme de nombreuses classes de séries temporelles.
xtslibrary(xts)
xts1 <- xts(x=1:10, order.by=Sys.Date()-1:10)
data <- rnorm(5)
dates <- seq(as.Date("2017-05-01"), length=5, by="days")
xts2 <- xts(x=data, order.by=dates)
xts3 <- xts(x=rnorm(10), order.by=as.POSIXct(Sys.Date()+1:10), born=as.POSIXct("1899-05-08"))
xts4 <- xts(x=1:10, order.by=Sys.Date()+1:10)
# ----- Série temporelle multivariée
xts5 <- cbind(xts1,xts4)
# ----- à partir d'un objet ts
data(AirPassengers)
xts6 <- as.xts(AirPassengers)
Les objets xts ont deux composants principaux :
coredata : une matrice pour les objets xtsindex: vecteur de n’importe quelle Date, classes POSIXct, DateTimehead(coredata(xts6))
## [,1]
## [1,] 112
## [2,] 118
## [3,] 132
## [4,] 129
## [5,] 121
## [6,] 135
head(index(xts6))
## [1] "janv. 1949" "févr. 1949" "mars 1949" "avr. 1949" "mai 1949"
## [6] "juin 1949"
dygraph(xts6)
# ----- calcul CMJ par iris et ajout au fichier shape
TLRV_bdx$DCOMIRIS <- Base_client$DCOMIRIS[match(TLRV_bdx$ID, Base_client$ID)]
CMJ_iris <- TLRV_bdx %>% group_by(DCOMIRIS) %>% dplyr::summarise(CMJ=mean(vol, na.rm = T))
contourIris@data$CMJ <- CMJ_iris$CMJ[match(contourIris@data$DCOMIRIS, CMJ_iris$DCOMIRIS)]
# ----- Ajout variables INSEE dans le fichier shape
INSEE <- read.csv2("data/raw/INSEE.csv", stringsAsFactors = F)
contourIris@data$nb_menage <- INSEE$Ménages.en.2014..compl.[match(contourIris@data$DCOMIRIS, INSEE$IRIS)]
contourIris@data$nb_personne_menage <- INSEE$Pop.Ménages.en.2014..compl.[match(contourIris@data$DCOMIRIS, INSEE$IRIS)]
Leaflet est l’une des bibliothèques JavaScript open-source les plus populaires pour les cartes interactives. Elle est utilisée par des sites Web allant du New York Times ou du Washington Post jusqu’à GitHub, ainsi que par des spécialistes des Systèmes d’Iformation Géographique comme OpenStreetMap, Mapbox et CartoDB.
library(leaflet)
m <- leaflet(width = "100%") %>%
addTiles() %>% # ajoute un fond de carte par défaut (OpenStreetMap)
addMarkers(lng=174.768, lat=-36.852, popup="The birthplace of R") # ajoute un marqueur
m # Affiche la map
library(leaflet)
load("~/TD/TP_Rshiny/data/processed/contourIris.RData")
labels <- sprintf(
"<strong>%s</strong><br/>%g m<sup>3</sup>/j",
contourIris$NOM_IRIS, round(contourIris$CMJ,2)
) %>% lapply(htmltools::HTML)
labelsInsee <- sprintf(
"<strong>%s</strong><br/>%g ménages",
contourIris$NOM_IRIS,contourIris$nb_menage
) %>% lapply(htmltools::HTML)
bins <- c(0, 1, 2, 3, 4, 5, 50, Inf)
pal <- colorBin("Blues", domain = contourIris$CMJ, bins = bins)
binsInsee <- c(0,500,1000,1500,2000,2500,Inf)
pal2 <- colorBin("YlOrRd", domain = contourIris$nb_menage, bins = binsInsee)
leaflet(contourIris,width = "100%") %>%
addTiles() %>%
addPolygons(
group = "conso",
weight = 2,
opacity = 1,
color = "white",
fillColor = ~pal(CMJ),
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")
)%>%
addPolygons(
group = "nb_menage",
weight = 2,
opacity = 1,
color = "white",
fillColor = ~pal2(nb_menage),
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labelsInsee,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")
)%>%
addLegend(pal = pal, values = ~CMJ, opacity = 0.7, title = "CMJ",group = "conso",
position = "bottomright")%>%
addLegend(pal = pal2, values = ~nb_menage, opacity = 0.7, title = "Nb ménages",group = "nb_menage",
position = "bottomright")%>%
addLayersControl(position="topright",overlayGroups = c("nb_menage","conso"))%>%
hideGroup(c("nb_menage"))