En résumé
Quand aucun widget intégré ne convient, écrivez votre propre code R, Python ou SQL directement dans un widget. Le code reçoit votre jeu de données filtré dans une variable dataset, et sa sortie peut être un graphique, une table, une valeur ou du HTML.
Pourquoi un widget de code
Les plugins du catalogue couvrent les analyses courantes, mais vous aurez parfois besoin d’un calcul spécifique : une transformation maison, un graphique avec une bibliothèque précise, un indicateur composite. En choisissant l’onglet Code personnalisé dans la boîte de dialogue Ajouter un widget, vous écrivez exactement ce que vous voulez, sans quitter le tableau de bord.
Âge
Choisir le langage
Dans l’onglet Code personnalisé, choisissez Python, R ou SQL. Le langage le plus adapté dépend de votre habitude et de la tâche :
- Python s’appuie sur l’écosystème pandas / matplotlib pour la manipulation et la visualisation.
- R convient aux analyses statistiques et aux graphiques
ggplot2/ base R. - SQL sert à interroger et agréger le jeu de données de manière déclarative.
Exécution en mode client : tout dans le navigateur
En mode client (sans backend), le code s’exécute dans votre navigateur grâce à des portages WebAssembly : Pyodide pour Python, WebR pour R, et DuckDB-WASM pour SQL. Vos données ne quittent alors pas la machine. Le premier lancement charge l’environnement (quelques secondes) ; les exécutions suivantes sont plus rapides. Avec un backend, l’exécution peut se faire côté serveur — voyez les modes de déploiement.
Accéder aux données
Votre code reçoit automatiquement le jeu de données du widget, déjà filtré par les filtres actifs du tableau de bord :
- En Python, la variable
datasetest un DataFrame pandas. Les colonnes portent leurs noms lisibles (par ex.dataset["age"]). - En R, la variable
datasetest un data.frame avec les mêmes colonnes.
Vous n’avez donc qu’à lire dataset et produire votre sortie.
import matplotlib.pyplot as plt
ax = dataset["age"].hist(bins=20)
ax.set_xlabel("Âge")
ax.set_ylabel("Effectif")
plt.show()
library(ggplot2)
ggplot(dataset, aes(x = age)) +
geom_histogram(bins = 20) +
labs(x = "Âge", y = "Effectif")
Les filtres s'appliquent avant votre code
Le dataset que reçoit votre code contient déjà le résultat des filtres du tableau de bord. Quand l’utilisateur change un filtre, le widget de code se ré-exécute sur les nouvelles lignes — votre code n’a rien de spécial à faire.
Types de sortie
Le widget affiche ce que votre code produit :
Graphique
Une figure matplotlib / ggplot / base R, rendue en image nette (vectorielle quand c’est possible).
Table
Un DataFrame ou data.frame affiché sous forme de tableau.
Valeur
Un nombre ou un texte imprimé — utile pour un indicateur simple.
HTML
Du HTML brut, pour un rendu personnalisé directement dans le widget.
En cas d’erreur, la sortie standard et les messages d’erreur (stdout / stderr) s’affichent dans le widget pour vous aider à corriger.
Code ponctuel ou plugin réutilisable ?
Un widget de code est idéal pour une analyse ponctuelle, propre à un tableau de bord. S’il se trouve que vous avez besoin du même code d’un projet à l’autre, mieux vaut l’empaqueter en plugin : il devient configurable, partageable et apparaît dans le catalogue. Voir Créer un plugin.