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