Afficher le code
import { aq, op } from '@uwdata/arquero' // le dplyr ou pandas du javascript
= require("bertin") // le ggplot de la carto en javascript
bertin import {view} from "@neocartocnrs/geoverview"
Observable JavaScript avec WidgetHTML : tableau, graphe, carte, inline code
Un premier bloc de code (chunk en anglais) est utilisé pour charger les librairies javascript qui seront utilisées dans les blocs de code suivant.
import { aq, op } from '@uwdata/arquero' // le dplyr ou pandas du javascript
= require("bertin") // le ggplot de la carto en javascript
bertin import {view} from "@neocartocnrs/geoverview"
Le geojson est un classique du web. La librairie bertin est très pratique pour faire des cartes équivalentes à celles de ggplot.
= FileAttachment("data/communes_mrn_crs4326.geojson").json()
communes_mrn // On commence ici par créer le tableau de donnée correspondant aux propriétés du geojson avec une fonction bien pratique de la librairie bertin
= bertin.properties.table(communes_mrn) communes_mrn_table
Et voici un affichage sous forme de tableau HTML.
= Inputs.search(communes_mrn_table)
viewof search // le tableau avec les valeurs filtrées
.table(
Inputs,
search
{height: 800,
rows: 71,
layout: "fixed",
sort: "population",
reverse: true,
columns:["nom", "population"] // choix des colonnes à afficher
} )
La libraire plot d’observable est un peu l’équivalent de ggplot en R. La logique est un peu différente mais, une fois prise en main, elle permet de composer des graphes à façon.
// La librairie plot est intégrée directement
.plot({
PlotmarginLeft: 180,
x: {axis: "top", grid: true},
marks: [
.barX(
Plot.features.map(d => d.properties), {
communes_mrnx: "population",
y: "nom",
tip: "xy",
sort: {y: "x", reverse: true}
})
] })
// la fonction pratique chargée dans les appels de librairie
view(communes_mrn)
// La librairie bertin est développé par un géographe français et très bien documentée
.draw({
bertinparams: { projection:"Mercator", margin: 50},
layers: [
{type: "layer",
geojson: communes_mrn,
stroke:"black",
fill: {
type: "choro",
values: "population",
nbreaks: 5,
method: "jenks",
colors: "Reds",
leg_round: -1,
leg_title: `Population`,
leg_x: 10,
leg_y: 10
,
}fillOpacity: 0.5,
tooltip: ["$nom","$population"]
,
}
{type:"tiles",
style:"openstreetmap"
,
}
] })
= bertin.properties.table(communes_mrn)
pop_rouen .filter(commune => commune.insee_com === '76540') // Filtrer par code_insee
.map(commune => commune.population); // récupérer la propriété population
Rouen compte habitants.
Dans cette phrase, le nombre d’habitants est issus directement du code grace à la syntaxe inline code.