Graphiques (dataviz)
La bibliothèque fournie quelques graphiques de base pouvant être utiliser directement.
Ma sa grande force réside dans le fait de pouvoir créer vos propres graphiques à partir de n'importe quelle bibliothèque (ECharts, Rechart, Chart.js, D3.js, etc.).
Graphiques standards
YearSerie
Adapté aux représentations de valeurs annuelles.
Nom | Type | Requis | Par défaut | Description |
---|---|---|---|---|
dataset |
string |
✳️ | — | Identifiant du dataset à utiliser. |
yearKey |
string |
✳️ | — | Nom de la colonne contennant l'année. |
valueKey |
string |
✳️ | — | Nom de la colonne contenant la valeur numérique |
categoryKey |
string |
— | Colonne pour grouper les données par catégorie (ex : type, secteur...). | |
title |
string |
— | Titre du graphique. | |
stack |
boolean |
false |
Empile les séries si plusieurs catégories sont présentes. | |
yearMark |
number \| string |
— | Année à mettre en évidence (ex : 2021 ou useControl('annee') ) |
|
type |
'bar' \| 'line' \| 'area' |
'line' |
Type de graphique à afficher. |
Pie
Graphique "camembert". Si des catégories sont dupliquées, les valeurs de celles-ci sont automatiquement sommées.
Nom | Type | Requis | Par défaut | Description |
---|---|---|---|---|
dataset |
string |
✳️ | — | Identifiant du dataset à utiliser. |
dataKey |
string |
✳️ | — | Nom de la colonne contenant les valeurs numériques à représenter. |
nameKey |
string |
✳️ | — | Nom de la colonne contenant les catégories (libellés des parts). |
donut |
boolean |
false |
Affiche le graphique en style donut (camembert avec un trou central). | |
unit |
string |
Unité à afficher (ex: %, kg, etc.) | ||
title |
string |
Titre du graphique | ||
other |
number | null |
1 | Regrouper les catégories représentant moins de x% dans une catégorie "Autres". null pour désactiver |
Exemple
<Dashboard>
<Dataset
id="dma_collecte_traitement"
resource='sinoe-(r)-destination-des-dma-collectes-par-type-de-traitement/lines'
url="https://data.ademe.fr/data-fair/api/v1/datasets"
type='datafair'
pageSize={5000}>
<Filter field='L_REGION'>Hauts-de-France</Filter>
<Filter field='L_TYP_REG_DECHET' operator='ne'>Encombrants</Filter>
<Filter field='ANNEE'>{useControl('annee')}</Filter>
<Transform>SELECT [L_TYP_REG_DECHET], [ANNEE], [C_DEPT], SUM([TONNAGE_DMA]) as [TONNAGE_DMA] FROM ? GROUP BY [ANNEE], [C_DEPT], [L_TYP_REG_DECHET]</Transform>
<Transform>{(data) => data.map(row=>({pouette:4, ...row}))}</Transform>
<Producer url="https://www.sinoe.org">Ademe</Producer>
<Producer url="https://odema-hautsdefrance.org/">Odema</Producer>
</Dataset>
<ChartPie
// Identifiant du dataset (obligatoire si plusieurs dataset)
dataset="destination-dma"
// Colonne qui contient les valeurs numériques
dataKey='TONNAGE_DMA'
// Colonne qui contient les catégories
nameKey='L_TYP_REG_DECHET'
// Variante "donut" (trou central)
donut
/>
</Dashboard>
Statistiques
Il s'agit de carte permettant de présenter des chiffres clés. On les regroupera généralement au sein d'un bloc.
Ce composant afficher la dernière valeur du dataset, il doit donc être ordonnée.
Nom | Type | Requis | Par défaut | Description |
---|---|---|---|---|
dataset |
string |
✳️ | — | Identifiant du jeu de données à utiliser. |
dataKey |
string |
✳️ | — | Nom de la colonne contenant les valeurs à afficher. |
evolutionSuffix |
string |
— | Texte à afficher après l’évolution (ex : "depuis l’an dernier"). | |
relativeEvolution |
boolean |
false |
Afficher l'évolution en pourcentage ; sinon dans la même unité que la valeur. | |
title |
string |
— | Titre de la carte statistique. | |
color |
string |
— | Couleur de la carte. | |
unit |
string |
— | Unité de la valeur (ex : kg, %, €). | |
invertColor |
boolean |
false |
Inverse la logique de couleur de l’évolution (rouge/vert). | |
icon |
ReactElement | string |
— | Icône affichée sur la carte (composant ou nom d’icône pour Iconify.js). | |
help |
string |
— | Texte affiché dans la tooltip d’aide. | |
compareWith |
"first" | "previous" |
— | Comparer la valeur avec la première valeur ou la valeur précédente. |
Exemple
<StatisticsCollection title="Chiffres clés">
<Statistics dataset="capacite_isdnd_region" dataKey="capacite" unit="T" color="orange"
icon="material-symbols-light:1x-mobiledata-badge-sharp" compare="first" invertColor relativeEvolution evolutionSuffix="depuis 2010"/>
<Statistics dataset="capacite_isdnd_region" dataKey="capacite" unit="🎃" color="green"
icon="pajamas:discord" compareWith="previous" invertColor relativeEvolution evolutionSuffix="depuis l'année dernière"/>
<Statistics dataset="capacite_isdnd_region" dataKey="capacite" unit="T" color="purple"
icon="pajamas:accessibility" relativeEvolution evolutionSuffix="depuis 2010"/>
</StatisticsCollection>
Développer vos propres graphiques 🔧
Il est possible d'écrire un composant dont le rendu est un visuel. N'importe quel bibliothèque peut-être utilisée, ou même du HTML.
Graphique Echarts
Api-dashboard fourni un composant <ChartEcharts>
permettant de faciliter la création de graphiques Echarts.
Il suffit de fournir un objet de configuration ECharts via la propriété options
.
Pour un usage plus avancé, la propriété ref
permet de récupérer l'instance ECharts (réagir à des évenements, déclencher des actions sur le graphique).
Propriété | Type | Description |
---|---|---|
option |
object |
Objet de configuration ECharts |
ref |
React.RefAttributes<EChartsReact> |
Référence de l'instance ECharts |
import React, { useRef, useEffect } from "react";
import { ChartEcharts } from "@geo2france/api-dashboard";
export default function MonGraphiqueCustom({}) {
useBlockConfig({
title:'Mon super graphique'
})
// Optionnel, permet de récuperer l'instance Echarts du graphique
const chartRef = useRef(null);
useEffect(() => {
if (chartRef.current) {
const mychart = chartRef.current.getEchartsInstance();
// Cf. https://echarts.apache.org/en/api.html#echartsInstance
mychart.on('click', (e) => ( console.log('clicked',e) ) );
}
}, [ ]);
// Cf. https://echarts.apache.org/en/option.html
const options = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'line'
}
]
};
return (
<ChartEcharts options={options} ref={chartRef} />
);
}
Icônes
Api-dashboard utilise la bibliothèque Iconify pour les icônes. Iconify étant installé comme dépendance, elle est directement utilisable dans le projet.
De très nombreuses icônes sont disponibles dans le catalogue qui aggrège de nombreuses bibliothèques d'icônes.
Le composant Icon
supporte différentes propriétées permettant de personnaliser le rendu (couleur, dimensions, transformations, etc.).
Consulter la documentation officielle.
import { Icon } from '@iconify/react';
<Icon icon="cib:creative-commons" />