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
raw
processed
Les 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)
xts
xts
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.
xts
library(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 xts
index
: vecteur de n’importe quelle Date
, classes POSIXct
, DateTime
head(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"))