Public
Edited
Mar 7
3 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
library = import("https://cdn.jsdelivr.net/npm/d3@7/+esm")
Insert cell
library2 = import("https://cdn.jsdelivr.net/npm/d3@6/+esm")
Insert cell
d3 = require("d3@6.7.0/dist/d3.min.js")
Insert cell
import {Scrubber} from "@mbostock/scrubber"
Insert cell
viz = require("geoviz@0.7.9")
Insert cell
Insert cell
dataallyears = FileAttachment("data-allyears.csv").csv({ typed: true })
Insert cell
Insert cell
pays = FileAttachment("world.geojson").json()
Insert cell
Insert cell
data-allyears.csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
Insert cell
minyear = d3.min(dataallyears, (d) => d.year)
Insert cell
maxyear = d3.max(dataallyears, (d) => d.year)
Insert cell
year = d3.range(minyear, maxyear + 1, 1);
Insert cell
Insert cell
normalizeGDP = (gdpValue) => (gdpValue - mingdp) / (maxgdp - mingdp)
Insert cell
normalizedData = dataallyears
.filter(d => d.gdp != null) // Filtrer les objets où 'gdp' n'est pas null ou undefined
.map(d => ({
...d, // Garder toutes les autres propriétés
normalized_gdp: normalizeGDP(d.gdp) * 100 // Ajouter la valeur 'normalized_gdp'
}));
Insert cell
Inputs.table(normalizedData)
Insert cell
Insert cell
dataallyearsworld_merge = viz.tool.merge({
geom: pays,
geom_id: "ISO3", // Accès correct à l'ISO3 dans properties
data: normalizedData,
data_id: "id"
});
Insert cell
dataallyearsworld = dataallyearsworld_merge.featureCollection
Insert cell
Insert cell
dataallyears2000 = dataallyears
.filter(d => d.year === 2000 && d.genre != null);
Insert cell
dataallyears2020 = dataallyears
.filter(d => d.year === 2020 && d.genre != null);
Insert cell
Insert cell
dataallyearsworld2000_merge = viz.tool.merge({
geom: pays,
geom_id: "ISO3",
data: dataallyears2000,
data_id: "id"
});
Insert cell
dataallyearsworld2020_merge = viz.tool.merge({
geom: pays,
geom_id: "ISO3",
data: dataallyears2020,
data_id: "id"
});
Insert cell
Insert cell
dataallyearsworld2000 = dataallyearsworld2000_merge.featureCollection
Insert cell
dataallyearsworld2020 = dataallyearsworld2020_merge.featureCollection
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
dataallyearsfilter = normalizedData.filter(d => d.year === date );
Insert cell
data_filter_merge = viz.tool.merge({
geom: pays,
geom_id: "ISO3", // Accès correct à l'ISO3 dans properties
data: dataallyearsfilter,
data_id: "id"
});
Insert cell
data_filter = data_filter_merge.featureCollection
Insert cell
Insert cell
mingdp = d3.min(dataallyears, (d) => d.gdp)
Insert cell
maxgdp = d3.max(dataallyears, (d) => d.gdp)
Insert cell
Insert cell
dataallyearsfilter1 = normalizedData.filter(d => d.year === years9);
Insert cell
data_edudep_merge = viz.tool.merge({
geom: pays,
geom_id: "ISO3", // Accès correct à l'ISO3 dans properties
data: dataallyearsfilter1,
data_id: "id"
});
Insert cell
data_edupchoro_filter = data_edudep_merge.featureCollection
Insert cell
Insert cell
// Grouper les données par pays et calculer les moyennes
groupedData2 = d3.rollup(
normalizedData, // Utilisation des données où les moyennes sont déjà ajoutées
v => ({
MoyennePubli: d3.mean(v.map(d => +d.publi).filter(d => d != null)) || 0,
MoyenneRd: d3.mean(v.map(d => +d.rd).filter(d => d != null)) || 0
}),
d => d.id
);

Insert cell
// Convertir la Map en tableau d'objets avec seulement les 3 colonnes demandées
tab = Array.from(groupedData2, ([id, moyennes]) => ({
id,
MoyennePubli: moyennes.MoyennePubli,
MoyenneRd: moyennes.MoyenneRd
}));
Insert cell
Inputs.table(tab)
Insert cell
tab_merge = viz.tool.merge({
geom: pays,
geom_id: "ISO3", // Accès correct à l'ISO3 dans properties
data: tab,
data_id: "id"
});
Insert cell
tab_choroprop = tab_merge.featureCollection
Insert cell
Insert cell

One platform to build and deploy the best data apps

Experiment and prototype by building visualizations in live JavaScript notebooks. Collaborate with your team and decide which concepts to build out.
Use Observable Framework to build data apps locally. Use data loaders to build in any language or library, including Python, SQL, and R.
Seamlessly deploy to Observable. Test before you ship, use automatic deploy-on-commit, and ensure your projects are always up-to-date.
Learn more