Extension:Chart
Support level: Pending The support level for this extension is currently under review. The Reader Growth Team is the maintainer of last resort for the time being. |
État de la version : stable |
|
|---|---|
| Implémentation | Balise |
| Description | Génère des graphiques |
| Auteur(s) | Brooke Vibber, Katie Filbert, Roan Kattouw |
| Politique de compatibilité | Le master conserve la compatibilité arrière. |
| MediaWiki | >= 1.46 |
| Modifie la base de données |
Non |
|
|
| Licence | Licence publique générale GNU v3.0 ou ultérieur |
| Téléchargement | README |
| Traduire l’extension Chart sur translatewiki.net si elle y est disponible | |
| Problèmes | Tâches ouvertes · Signaler un bogue |
L'extension Chart fournit des capacités de visualisation de données interactives de base conçues pour remplacer certains aspects, mais pas tous, de l'extension Graph. Cette extension est actuellement en développement pour les wikis Wikimedia. Voir Extension:Chart/Projet pour plus de détails sur le processus de développement.
Cette extension prend en charge les types de graphiques suivants :
Installation
L'extension Chart nécessite l'installation de l'extension JsonConfig ainsi que le téléchargement de la bibliothèque JavaScript Chart Renderer (actuellement la bibliothèque TypeScript).
Voir le fichier README.md dans le dépôt pour les instructions de configuration complètes.
Wikimedia production
Pour l'utilisation pour Wikimedia, voir wikitech:Kubernetes/Deployments#Cheatsheet pour les instructions générales sur les déploiements de services. Key bits here:
- find your commit's build image id from
chart-renderer's CI, eg "2025-06-24-201619-production"- edit
deployment-charts'shelmfile.d/services/chart-renderer/values.yamlto reference the new version - get it +2'd by a deployer
- edit
- (as a deployer) log into
deployment.codfw.wmnetordeployment.eqiad.wmnetdepending on the active data center$ cd /srv/deployment-charts/helmfile.d/services/chart-renderer- latest service config should appear within a couple minutes (there's a regular update job)
$ helmfile -e staging -i apply --context 5- confirm the changes and let it deploy to staging
- test rendering on beta cluster
- TODO: add a specific page with our planned live test charts
- TODO: add directions on checking pixel rendering results
- once confirmed good, deploy to main clusters:
$ helmfile -e codfw -i apply --context 5- confirm the changes and let it deploy to codfw
$ helmfile -e eqiad -i apply --context 5- confirm the changes and let it deploy to eqiad
Comment l'utiliser
Pour générer un graphique, une définition de graphique à associer à la source des données que vous souhaitez utiliser doit être réalisée. Une définition de graphique est structurée comme un fichier JSON relativement simple; voir Extension:Chart/Spécification pour les détails de syntaxe.
Tous les graphiques de cet exemple peuvent être générés à partir de la même source de données : Data:Chart Example Data.tab, un ensemble de données fictif. Les exemples de contenu de ces pages sont disponibles dans le répertoire sample.
{
"license": "CC0-1.0",
"version": 1,
"source": "Chart Example Data.tab",
"type": "line",
"title": {
"en": "Example Chart Title"
},
"subtitle": {
"en": "Example Subtitle"
},
"xAxis": {
"title": {
"en": "Example X Axis Title"
},
"format": "none"
},
"yAxis": {
"title": {
"en": "Example Y Axis Title"
},
"format": "none"
},
"mediawikiCategories": [
{
"name": "Example category",
"sort": "Its sortkey"
}
],
"transform": {
"module": "Optional lua module for data transforms",
"function": "transform_func",
"args": {
"arg_name": "arg_value"
}
}
}
Une fois un graphique défini, vous pouvez le générer facilement en utilisant la fonction d'analyse syntaxique #chart. Dans ce cas, les données du graphique sont définies en Data:Chart Example Data.tab, et le graphique lui-même est défini en Data:Example.Line.chart :
{{#chart:Example.Line.chart}}
Notez qu'un graphique peut être générique et réutilisé avec différentes données sources, comme ci-dessous :
{{#chart:Population through years.chart
|data=Population of USA.tab
}}
{{#chart:Population through years.chart
|data=Population of UK.tab
}}
{{#chart:Population through years.chart
|data=Population of Poland.tab
}}
Date formats in tabular data
When creating charts with dates on the x-axis, dates in tabular data should be formatted as strings that are exactly 10 characters long in the format:
YYYY-MM-DD, e.g.,2025-10-20
Other 10 character strings that are parseable by JavaScript's Date.parse() function may also work, though not officially supported.
When dates are detected in the first column of the tabular data, they will be automatically localized based on the wiki's content language.
{
"license": "CC0-1.0",
"description": {
"en": "1993 Canadian federal election"
},
"mediawikiCategories": [
{
"name": "Data:.tab",
"sort": ""
},
{
"name": "Data:Examples.tab",
"sort": ""
}
],
"schema": {
"fields": [
{
"name": "date",
"type": "string",
"title": {
"en": "Date",
"fr": "Date"
}
},
{
"name": "pc",
"type": "number",
"title": {
"en": "PC",
"fr": "PC"
}
},
{
"name": "liberal",
"type": "number",
"title": {
"en": "Liberal",
"fr": "Libéral"
}
},
{
"name": "ndp",
"type": "number",
"title": {
"en": "NDP",
"fr": "NPD"
}
},
{
"name": "bq",
"type": "number",
"title": {
"en": "BQ",
"fr": "BQ"
}
},
{
"name": "reform",
"type": "number",
"title": {
"en": "Reform",
"fr": "Réform"
}
}
]
},
"data": [
[
"1993-09-09",
35,
37,
8,
8,
10
],
[
"1993-09-14",
36,
33,
8,
10,
11
],
[
"1993-09-20",
35,
35,
6,
11,
11
]
]
}
See examples on Commons:
For years, the dates should be numbers:
{
"license": "CC0-1.0",
"description": {
"en": "New Zealand annual wine production, in millions of litres"
},
"sources": "Statistics from New Zealand Winegrowers 1998–2024 annual reports",
"schema": {
"fields": [
{
"name": "year",
"type": "number",
"title": {
"en": "Year"
}
},
{
"name": "production",
"type": "number",
"title": {
"en": "Wine produced (million litres)"
}
}
]
},
"data": [
[
1990,
54.4
],
[
1991,
49.9
],
[
1992,
41.6
],
[
1993,
32.5
],
[
1994,
41.1
],
[
1995,
56.4
]
]
}
Example of charts and tabular data with years on the x axis:
- commons:Data:New_Zealand_Annual_Wine_Production.tab
- commons:Data:New_Zealand_Annual_Wine_Production.chart
See Support for dates ADR in gerrit for more details on date support.
Personnalisation
La personnalisation des graphiques est actuellement limitée. L'espoir est qu'après les tests, les discussions et les évaluations, des solutions de personnalisation puissent être trouvées qui ne compromettent pas l'accessibilité, le rendu spécifique à l'appareil ou la sécurité.
Taille
Actuellement, les graphiques occupent toute la largeur du conteneur où vous les placez.
L'objectif final est de s'assurer que les graphiques peuvent être rendus lisibles, peu importe l'appareil sur lequel ils sont lus; voir T376845 pour plus de détails.
Thématisation
Actuellement, les graphiques sont limités à une seule palette de couleurs par défaut. Cette palette a été soigneusement conçue en tenant compte de l'accessibilité. Les raisons de ces choix de couleurs peuvent être vues dans T369863.
Certains graphiques exigent des thèmes de couleur spécifiques, par exemple, pour représenter des données relatives aux partis politiques. Il reste une question ouverte de savoir comment mieux soutenir ce type de personnalisation sans compromettre la capacité des lecteurs ayant des besoins d'accessibilité (par exemple, la cécité) pour les utiliser.
Note de précaution
Notez que les graphiques actuellement génèrent des sorties SVG pouvant être mises en forme via TemplateStyles et que la mise en forme des éléments SVG ne doit pas être considérée comme stable car elle peut changer à tout instant. Veuillez ne pas vous appuyer sur le CSS pour modifier l'apparence du graphique car cela peut produire des graphiques qui ne seront plus fonctionnels à l'avenir ou qui pourraient interférer avec les fonctions d'accessibilité qui modifient la taille de la police et des fonctionnalités comme le mode sombre.
Internationalisation
Les graphiques ne peuvent être intégrés que dans le langage du contenu du wiki; par exemple, la chaîne de requête "uselang" (par exemple ?uselang=es) n'aura pas d'impact sur le graphique.
Le format du graphique prend en charge la définition de texte comme le titre et les étiquettes dans différentes langues, de sorte que le même graphique peut être utilisé dans les wikis de différentes langues. Voir cet exemple d'un graphique avec support pour plusieurs langues affiché dans un wiki en espagnol.
Problèmes connus
Voir cette vue filtrée du tableau Phabricator de Charts.
Types de graphiques
Pour tous les graphiques, les données doivent être disposées en colonnes, la première colonne représentant le x-axis et les colonnes suivantes représentant les séries ou courbes sur le y-axis.
Linéaire
Dans l'exemple suivant, le {{#chart: }} est enveloppé dans un conteneur de {{Image frame}} pour définir la largeur du graphique et inclure une légende.
Un lien est également fourni vers les données tabulaires brutes, où des informations sur les sources des données peuvent être trouvées :
{{image frame
|content={{#chart:Example.Line.chart}} [[commons:Data:Chart Example Data.tab|'''Raw data''']]
|width = 340
|caption = This is an example of a line chart.
}}
Voir le résultat dans cette section.
En barres
Le graphique couvre ici la largeur complète de la zone de contenu de la page :
{{#chart:Example.Bar.chart}} <div align="center">[[commons:Data:Chart Example Data.tab|'''Raw data''']]</div>
Ce qui donne :
En aires
Circulaire
Les graphiques circulaires sont un type de graphique spécial et les sources de données peuvent nécessiter une modification pour être générées de manière appropriée.
Lors de la lecture des données, toutes les colonnes non numériques (par exemple, l'axe x) seront rejetées et la somme de toutes les lignes sera représentée sur le graphique.
Par exemple, lorsque plusieurs rangées représentent des valeurs pour A, B et C à de nombreuses dates, par exemple le 1er janvier et le 2 janvier, la partie du graphique circulaire pour A représentera la somme de toutes les valeurs de rangées de A à travers ces dates.
Retrouver les graphiques existants
Les graphiques qui peuvent être utilisés dans les articles sont disponibles sur Wikimedia Commons et peuvent être suivis en utilisant les catégories MediaWiki.
Cette requête peut être utilisée comme proxy pour trouver des graphiques que d'autres ont créés et contribuent à des traductions, et ceci pour trouver des pages tab qui peuvent être utilisées pour produire des graphiques.
L'ensemble des pages wiki qui utilisent des graphiques sur un wiki particulier peut être trouvé dans la catégorie dont le nom est défini à MediaWiki:chart-render-category et MediaWiki:Chart-error-category (Category:Pages using the Chart extension et Category:Pages using the Chart extension with rendering errors sur ce wiki). Veuillez vous assurer de connecter les catégories de votre wiki à d:Q131382738 et d:Q131406605 pour faciliter la recherche entre les wikis.
Migration depuis l'extension Graph
Veuillez consulter la catégorie des Pages Wikipédia avec graphiques désactivés dans différentes langues pour les anciens graphiques qui doivent être migrés vers l'extension Charts. Certains ont toutefois déjà été supprimés sans être remplacés par de nouveaux graphiques. La liste peut être comparée à une liste archivée des 200 premières pages sur 23 811 de Wikipédia en anglais avec les graphiques désactivés datant de 2023, peu après l'ajout des modèles à cette catégorie, et à des listes correspondantes dans d'autres langues.
Documentation technique
Compte tenu des problèmes liés à Extension:Graph, toutes les décisions concernant la nouvelle extension ont été examinées avec soin, dans l'espoir de renforcer la confiance dans son remplacement.
Jusqu'à présent, les décisions techniques sont documentées dans le référentiel de code du dossier /doc/adr.
Gestion des erreurs
Les pages de .chart qui ne sont pas disponibles sont automatiquement stockées dans commons:Category:Pages using the Chart extension with rendering errors. Les pages de Wiki avec des graphiques défectueux sont automatiquement stockées dans Catégorie:Pages utilisant l'extension Chart avec erreurs de rendu dans différentes versions linguistiques.
Les erreurs de rendu du graphique côté client seront enregistrées sur logstash. (Seulement pour les développeurs.)
Outils pour produire les graphiques
Il existe plusieurs méthodes envisageables pour produire et modifier de manière semi-automatique les graphiques et leurs données tabulaires :
- Le script graphDataImport peut être utilisé dans le navigateur web pour extraire des données à partir d'un graphique en wikitexte existant ou similaire, et le convertir en une page .tab, une page de définition .chart et un nouveau wikitexte.
- L'IA générative peut être sollicitée pour extraire des données à partir du wikicode et des tableaux graphiques existants, les convertir en pages .tab et .chart et générer un nouveau wikicode, selon les spécifications données. Elle peut également fournir une traduction de titres, et être utilisée pour étendre et mettre à jour la page .tab avec de nouvelles données.
- Le gadget TabularImportExport peut convertir les fichiers Excel et .csv vers et depuis les pages .tab . Vous pouvez l'activer via vos préférences sur Commons.
- L'interface utilisateur JSON
Modifier en tant que tableau(qui fait partie de l'extension Jsonconfig) est disponible à partir de la page d'édition .tab. - Certains bots peuvent importer périodiquement des statistiques provenant du Web ou de graphiques Wikipédia existants vers des pages .tab ou .chart, sur demande. Ces robots comprennent DPLA bot et SLiuBot.
- GraphBot pour convertir les graphiques de Wikipédia anglais en tableaux.
Voir aussi
- Extension:Chart/Project/FAQ – Foire aux questions
- Transforms
| Cette extension est utilisée par au moins un des projets Wikimédia. Cela signifie probablement que l’extension est assez stable et fonctionnelle pour être utilisée sur des sites à fort trafic. Recherchez le nom de cette extension dans le CommonSettings.php de Wikimédia et dans le fichier de configuration InitialiseSettings.php pour situer les endroits où elle est installée. Une liste complète des extensions installées sur un Wiki donné peut être visualisée sur la page Special:Version de ce wiki. |
- Extensions maintained by Reader Teams/fr
- Extensions maintained by Reader Growth/fr
- Extensions maintained by Reader Teams - Level Pending/fr
- Stable extensions/fr
- Tag extensions/fr
- LinksUpdateComplete extensions/fr
- PageSaveComplete extensions/fr
- ParserFirstCallInit extensions/fr
- GPL licensed extensions/fr
- Extensions in Wikimedia version control/fr
- All extensions/fr
- Extensions used on Wikimedia/fr
