Public
Edited
Aug 24, 2024
2 forks
5 stars
Insert cell
Insert cell
Insert cell
Ceci est une cellule markdown
Insert cell
Insert cell
1+1
Insert cell
On peut définir une variable :
Insert cell
year = 2021
Insert cell
On peut appeler la variable en markdown avec un dollar et des accolades : ${year}.
Insert cell
On peut aussi définir une boîte pour entrer un élément de manière interactive.
Insert cell
viewof name = Inputs.text({ label: "Personnage", value: "Milou" })
Insert cell
Ensuite, on peut bien évidemment faire appel à cette variable : ${name}.
Insert cell
Insert cell
import {get_label} from "@pac02/user-level-gender-statistics-for-wikipedia"
Insert cell
get_label("Q1640056", "fr")
Insert cell
Insert cell
Insert cell
import {tex} from "@lukesmurray/wikidata-sparql-cell-mode-hack"
Insert cell
%sparql
SELECT ?character ?characterLabel ?book ?bookLabel ?rk WHERE {
?book p:P179 ?statement.
?statement ps:P179 wd:Q744536;
pq:P1545 ?rank.
BIND(xsd:integer(?rank) AS ?rk)
?book wdt:P674 ?character.
SERVICE wikibase:label { bd:serviceParam wikibase:language "fr". }
}
ORDER BY (?rk) (?characterLabel)
Insert cell
Insert cell
viewof character = Inputs.text({ label: "Personnage", value: "Q1640056" })
Insert cell
%sparql
SELECT ?character ?characterLabel ?book ?bookLabel ?rk WHERE {
?book p:P179 ?statement.
?statement ps:P179 wd:Q744536;
pq:P1545 ?rank.
BIND(xsd:integer(?rank) AS ?rk)
?book wdt:P674 wd:${character}.
SERVICE wikibase:label { bd:serviceParam wikibase:language "fr". }
}
ORDER BY (?rk) (?characterLabel)
Insert cell
Insert cell
viewof characterName = Inputs.text({ label: "Personnage", value: "Milou" })
Insert cell
%sparql
SELECT ?character ?characterLabel ?book ?bookLabel ?rk WHERE {
?book p:P179 ?statement.
?statement ps:P179 wd:Q744536;
pq:P1545 ?rank.
BIND(xsd:integer(?rank) AS ?rk)
?book wdt:P674 ?character.
SERVICE wikibase:label { bd:serviceParam wikibase:language "fr". }
?character rdfs:label ?characterLabel .
filter (lang(?characterLabel) = "fr")
FILTER(STRSTARTS(?characterLabel, "${characterName}")) .
}
ORDER BY (?rk) (?characterLabel)
Insert cell
Insert cell
query_characters = `SELECT ?character ?characterLabel ?book ?bookLabel ?rk WHERE {
?book p:P179 ?statement.
?statement ps:P179 wd:Q744536;
pq:P1545 ?rank.
BIND(xsd:integer(?rank) AS ?rk)
?book wdt:P674 ?character.
SERVICE wikibase:label { bd:serviceParam wikibase:language "fr". }
}
ORDER BY (?rk) (?characterLabel)`
Insert cell
data_characters = fetch(`https://query.wikidata.org/sparql?query=${encodeURIComponent(query_characters)}`, {headers: {accept: "application/sparql-results+json"}}).then(response => response.json())
Insert cell
Insert cell
import {aq, op} from "@uwdata/arquero"
Insert cell
Insert cell
df_characters = aq.from(data_characters.results.bindings.map(res => ({
rank: res.rk.value,
book: res.bookLabel.value,
character: res.characterLabel.value,
})))
Insert cell
Insert cell
df_characters.view()// ne montre que les 50 premières lignes
Insert cell
Insert cell
df_characters
.groupby("character") // regrouper selon une variable
.count() // compter les éléments
.orderby(aq.desc("count")) // réordonner le data set
.view() // afficher le tableau
Insert cell
Insert cell
Insert cell
vl.markBar()
.data(
df_characters // voir la transformation des données plus haut
.groupby("character") // groupe sur les personnages
.count() // compte par personnage
.orderby(aq.desc("count")) // réordonne en fonction de la fréquence
)
.encode(
vl.y().field('character') // axe des ordonnées
.type('nominal') // variable nominale, pourrait être aussi "quantitative" ou "ordinal"
.sort("count") // tri des barres pour être dans l'ordre décroissant
.title("Personnages de Tintin"), // titre de l'axe des ordonnées
vl.x().field('count') // axe des abscisses
.type('quantitative') // variable quantitative
.title("Nombre d'apparitions"), // titre de l'axe des abscisses
vl.tooltip(['character', 'count']) // ajout des éléments à afficher au survol à la souris
)
.width(width) // pleine largeur
.render()
Insert cell
Insert cell
viewof range = Inputs.range([0, 24], {step: 1}, {label: "Nombre d'apparitions"})
Insert cell
vl.markBar()
.data(
df_characters // voir la transformation des données plus haut
.groupby("character") // groupe sur les personnages
.count() // compte par personnage
.orderby(aq.desc("count")) // réordonne en fonction de la fréquence
.filter(aq.escape(d => d.count >= range)) // filtre sur le nombre d'apparitions
)
.encode(
vl.y().field('character') // axe des ordonnées
.type('nominal') // variable nominale, pourrait être aussi "quantitative" ou "ordinal"
.sort("count") // tri des barres pour être dans l'ordre décroissant
.title("Personnages de Tintin"), // titre de l'axe des ordonnées
vl.x().field('count') // axe des abscisses
.type('quantitative') // variable quantitative
.title("Nombre d'apparitions"), // titre de l'axe des abscisses
vl.tooltip(['character', 'count']) // ajout des éléments à afficher au survol à la souris
)
.width(width) // pleine largeur
.render()
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more