Journée cartostats - 9 juin 2017
Le principe de la reproductibilité est au fondement même des sciences
La reproductibilité est le meilleur test de la validité d'une expérimentation scientifique. "La science est infaillible ; mais les savants se trompent toujours" (Anatole France, 1889)
[CONSTAT] Par rapport aux sciences experimentales, Les sciences basées sur l'informatique ont l'avantage d'être plus facilement reproductibles.
[OBJECTIF] Accompagner les publications scientifiques des jeux de données et codes sources pour permettre aux collègues de reproduire les résultats.
Peng, 2011
Les cartes, comme les autres production graphiques ou statistiques sont des éléments à part entière des études scientifique.
La grande majorité des cartes produites dans un contexte académique sont issues de processus comlexes. Elles sont donc souvent produites en utilisant une grande variété de logiciels et de formats.
Cette variété de formats et de logiciels rend difficile la reproduction des cartes.
=> UN OBJECTIF : simplifier les chaines de traitement
Un langage commun permetant de couvrir les différentes étapes de la constructuion cartographique
Disponibilité (question du coût des licences)
Transparence (open-source, licence d'utilisation)
Simplicité d'utilisation (degrès d'adoption de la solution dans la communauté concernée)
Le logiciel R
Son écosystème de packages
Un environnement de développement intégré (IDE).
+
=> Des solutions de literate programming, tel que le Markdown et le RMardown.
Literate programming : Une explication de la logique du programme en langage naturel, entremêlée de morceaux de code source.
=> Un logiciel de gestion de version, tel que git et la plateforme d'hébergement Github pour diffuser et partager ses résultats, travailler en équipe ou faire appel à des contributeurs.
R est un langage et un environnement permettant de réaliser une variété de traitements statistiques et de représentations graphiques.
R est un logiciel libre sous license GNU General Public License.
R est multiplateforme (GNU/Linux, Windows, OS X…).
10762 packages dans le Comprehensive R Archive Network (CRAN) (6 juin 2017)
CRAN package data through 2016 by Andrie de Vries
library(cartography) data(nuts2006) nuts2.df$cagr <- (((nuts2.df$pop2008 / nuts2.df$pop1999)^(1/9)) - 1) * 100 choroLayer(spdf = nuts2.spdf, df = nuts2.df, var = "cagr")
library(cartography) data(nuts2006) nuts2.df$cagr <- (((nuts2.df$pop2008 / nuts2.df$pop1999)^(1/9)) - 1) * 100 cols <- carto.pal(pal1 = "green.pal", n1 = 2, pal2 = "red.pal", n2 = 4) plot(nuts0.spdf, border = NA, col = NA, bg = "#A6CAE0") plot(world.spdf, col = "#E3DEBF", border=NA, add=TRUE) choroLayer(spdf = nuts2.spdf, df = nuts2.df, var = "cagr", breaks = c(-2.43,-1,0,0.5,1,2,3.1), col = cols, border = "grey40", lwd = 0.5, legend.pos = "right", legend.title.txt = "Compound Annual\nGrowth Rate", legend.values.rnd = 2, add = TRUE) plot(nuts0.spdf,border = "grey20", lwd=0.75, add=TRUE) layoutLayer(title = "Demographic Trends", author = "cartography", sources = "Eurostat, 2008", frame = TRUE, col = NA, scale = NULL, coltitle = "black", south = TRUE) barscale(size = 400)
# ... ## Plot Stamen tiles (using OpenStreetMap data) as basemap EUosm <- getTiles(spdf = nuts0.spdf, type = "stamenwatercolor", zoom = 4) # Plot the tiles tilesLayer(EUosm) # ... # Plot countries population propSymbolsLayer(spdf = nuts0.spdf, # SpatialPolygonsDataFrame of the countries df = nuts0.df, # data frame of the regions var = "pop", # population symbols = "circle", # type of symbol border = "white", # color of the symbols borders lwd = 1.5, # width of the symbols borders legend.pos = "topleft", legend.title.txt = "Total population\n(in thousands)") # ...
# ... # Plot symbols with choropleth coloration propSymbolsChoroLayer(spdf = nuts2.spdf, df = nuts2.df, var = "pop2008", # field in df to plot the symbols sizes inches = 0.1, # set the symbols sizes var2 = "cagr", # field in df to plot the colors col = cols, # symbols colors breaks = c(-2.43,-1,0,0.5,1,2,3.1), # breaks border = "grey50", # border colors of the symbols lwd = 0.75, # symbols width legend.var.pos = "topright", # size legend position legend.var.values.rnd = -3, # size legend value roundinf legend.var.title.txt = "Total Population", # size legend title legend.var.style = "e", # size legend type legend.var2.pos = "right", # color legend position legend.var2.title.txt = "Compound Annual\nGrowth Rate") # legend title # ...
# ... # Create a grid layer mygrid <- getGridLayer(spdf=nuts2.spdf, # SpatialPolygonsDataFrame cellsize = 200000) # output cell size, in map units (200 km) # ... # Plot the gridded population density choroLayer(spdf = mygrid$spdf,df = datagrid.df,var = "densitykm", border = "grey80", col = cols, legend.pos = "topright", method = "q6", add = TRUE, legend.title.txt = "Population Density\n(inhabitant/km²)") # ...
# ... # Get a SpatialLinesDataFrame of countries borders nuts0.contig.spdf <- getBorders(nuts0.spdf) # ... # Plot discontinuities discLayer(spdf = nuts0.contig.spdf, # SpatialLinesDataFrame of borders df = nuts0.df, # data frame on countries var = "gdpcap", # variable used to compute discontinuties type = "rel", # type of discontinuity measure method="equal", # discretisation of discontinuities nclass=4, # number of discontinuities classes threshold = 0.5, # representation threshold of discontinuities sizemin = 0.5, # minimum size of discontinuities lines sizemax = 6, # maximum size of discontinuities lines col="red", # color of the lines legend.values.rnd = 1, legend.title.txt = "Discontinuities in \nGDP per Capita\n(relative)", legend.pos = "topright", add=TRUE) # ...
# ... # compute & display the potential map smoothLayer(spdf = mygrid$spdf, df = df1, var = "gdp", var2 = "pop2008", breaks = v, span = 1e+05, beta = 2, mask = nuts0.spdf, resolution = 49000, col = cols, legend.title.txt = "Potential\nGDP per capita\n(in euros)", legend.values.rnd = -2, border = "grey80", lwd = 0.5, add = T, legend.pos = "topright") # ...
## Chargement des packages library(xml2) library(rvest)
==> result2017.csv
==> result2012.csv