> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-wbdocs-1882.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Aperçu des graphiques personnalisés

> Créez des graphiques personnalisés dans des projets W&B avec des visualisations Vega

Créez des graphiques personnalisés dans votre projet W\&B. Enregistrez des tableaux de données de tout type et visualisez-les exactement comme vous le souhaitez. Contrôlez les détails des polices, des couleurs et des info-bulles grâce à toute la puissance de [Vega](https://vega.github.io/vega/).

* Code : Essayez un [notebook Colab d'exemple](https://tiny.cc/custom-charts).
* Vidéo : Regardez une [vidéo de guide pas à pas](https://www.youtube.com/watch?v=3-N9OV6bkSM).
* Exemple : [Notebook de démo rapide pour Keras et Sklearn](https://colab.research.google.com/drive/1g-gNGokPWM2Qbc8p1Gofud0_5AoZdoSD?usp=sharing)

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/gvIZGkH-i0H7aNZQ/images/app_ui/supported_charts.png?fit=max&auto=format&n=gvIZGkH-i0H7aNZQ&q=85&s=dc576f1a07067ee0757fa6e6d049faab" alt="Graphiques pris en charge depuis vega.github.io/vega" max-width="90%" width="2634" height="588" data-path="images/app_ui/supported_charts.png" />
</Frame>

<div id="how-it-works">
  ### Comment ça marche
</div>

1. **Journaliser les données** : depuis votre script, journalisez les données de [configuration](/fr/models/track/config/) et de summary.
2. **Personnaliser le graphique** : récupérez les données journalisées à l’aide d’une requête [GraphQL](https://graphql.org). Visualisez les résultats de votre requête avec [Vega](https://vega.github.io/vega/), une puissante grammaire de visualisation.
3. **Journaliser le graphique** : appelez votre propre préréglage depuis votre script avec `wandb.plot_table()`.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/gvIZGkH-i0H7aNZQ/images/app_ui/pr_roc.png?fit=max&auto=format&n=gvIZGkH-i0H7aNZQ&q=85&s=f9e4f0b846b4d6b5a1142a9181944c1f" alt="Courbes PR et ROC" width="1114" height="422" data-path="images/app_ui/pr_roc.png" />
</Frame>

Si vous ne voyez pas les données attendues, il se peut que la colonne recherchée ne soit pas journalisée dans les runs sélectionnés. Enregistrez votre graphique, revenez au tableau des runs, puis vérifiez les runs sélectionnés à l’aide de l’icône **œil**.

<div id="log-charts-from-a-script">
  ## Journaliser des graphiques à partir d’un script
</div>

<div id="builtin-presets">
  ### Préréglages intégrés
</div>

W\&B propose plusieurs préréglages de graphiques intégrés que vous pouvez journaliser directement depuis votre script. Il s’agit notamment de graphiques en courbes, de nuages de points, de diagrammes à barres, d’histogrammes, de courbes PR et de courbes ROC.

<Tabs>
  <Tab title="Graphique en courbes">
    `wandb.plot.line()`

    Journalisez un graphique en courbes personnalisé : une liste de points reliés et ordonnés (x, y) sur des axes x et y arbitraires.

    ```python theme={null}
    with wandb.init() as run:
      data = [[x, y] for (x, y) in zip(x_values, y_values)]
      table = wandb.Table(data=data, columns=["x", "y"])
      run.log(
          {
              "my_custom_plot_id": wandb.plot.line(
                  table, "x", "y", title="Custom Y vs X Line Plot"
              )
          }
      )
    ```

    Un graphique en courbes enregistre des courbes sur deux dimensions quelconques. Si vous tracez deux listes de valeurs l'une par rapport à l'autre, le nombre de valeurs dans les listes doit correspondre exactement (par exemple, chaque point doit avoir un x et un y).

    <Frame>
      <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/gvIZGkH-i0H7aNZQ/images/app_ui/line_plot.png?fit=max&auto=format&n=gvIZGkH-i0H7aNZQ&q=85&s=f64cbde29700a809bfcc2fc87e300a43" alt="Graphique en courbes personnalisé" width="1930" height="1228" data-path="images/app_ui/line_plot.png" />
    </Frame>

    [Voir un exemple dans Reports](https://wandb.ai/wandb/plots/reports/Custom-Line-Plots--VmlldzoyNjk5NTA) ou [essayer un exemple de notebook Google Colab](https://tiny.cc/custom-charts).
  </Tab>

  <Tab title="Nuage de points">
    `wandb.plot.scatter()`

    Ajoutez au journal un graphique de dispersion personnalisé : une liste de points (x, y) sur une paire d’axes x et y arbitraires.

    ```python theme={null}
    with wandb.init() as run:
      data = [[x, y] for (x, y) in zip(class_x_prediction_scores, class_y_prediction_scores)]
      table = wandb.Table(data=data, columns=["class_x", "class_y"])
      run.log({"my_custom_id": wandb.plot.scatter(table, "class_x", "class_y")})
    ```

    Vous pouvez utiliser ceci pour journaliser des points sur n’importe quelles deux dimensions d’un nuage de points. Notez que si vous représentez deux listes de valeurs l’une par rapport à l’autre, le nombre de valeurs dans les listes doit correspondre exactement (par exemple, chaque point doit avoir un x et un y).

    <Frame>
      <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/g98EkbyZbbkyMi8o/images/app_ui/demo_scatter_plot.png?fit=max&auto=format&n=g98EkbyZbbkyMi8o&q=85&s=40f78eaa2a1be746a7953827ee135766" alt="Nuage de points" width="2194" height="940" data-path="images/app_ui/demo_scatter_plot.png" />
    </Frame>

    [Voir un exemple de rapport](https://wandb.ai/wandb/plots/reports/Custom-Scatter-Plots--VmlldzoyNjk5NDQ) ou [essayer un notebook Google Colab d’exemple](https://tiny.cc/custom-charts).
  </Tab>

  <Tab title="Diagramme en barres">
    `wandb.plot.bar()`

    Enregistrez dans le journal un graphique à barres personnalisé — une liste de valeurs étiquetées représentées sous forme de barres — directement en quelques lignes :

    ```python theme={null}
    with wandb.init() as run:
      data = [[label, val] for (label, val) in zip(labels, values)]
      table = wandb.Table(data=data, columns=["label", "value"])
      run.log(
          {
              "my_bar_chart_id": wandb.plot.bar(
                  table, "label", "value", title="Custom Bar Chart"
              )
          }
      )
    ```

    Vous pouvez utiliser ceci pour journaliser n’importe quels graphiques en barres. Notez que le nombre de libellés et de valeurs dans les listes doit correspondre exactement (par exemple, chaque point de données doit avoir les deux).

    <Frame>
      <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/g98EkbyZbbkyMi8o/images/app_ui/demo_bar_plot.png?fit=max&auto=format&n=g98EkbyZbbkyMi8o&q=85&s=90a1c1a33087e1275c3a3d08454128e9" alt="Exemple de graphique en barres" width="659" height="579" data-path="images/app_ui/demo_bar_plot.png" />
    </Frame>

    [Voir un exemple de rapport](https://wandb.ai/wandb/plots/reports/Custom-Bar-Charts--VmlldzoyNzExNzk) ou [essayer un notebook d’exemple Google Colab](https://tiny.cc/custom-charts).
  </Tab>

  <Tab title="Histogramme">
    `wandb.plot.histogram()`

    Enregistrez un histogramme personnalisé — répartissez une liste de valeurs dans des classes selon leur nombre/la fréquence d’occurrence — directement en quelques lignes. Supposons que j'aie une liste de scores de confiance de prédiction (`scores`) et que je veuille visualiser leur distribution :

    ```python theme={null}
    with wandb.init() as run:
      data = [[s] for s in scores]
      table = wandb.Table(data=data, columns=["scores"])
      run.log({"my_histogram": wandb.plot.histogram(table, "scores", title=None)})
    ```

    Vous pouvez utiliser ceci pour enregistrer des histogrammes quelconques. Notez que `data` est une liste de listes, conçue pour représenter un tableau 2D de lignes et de colonnes.

    <Frame>
      <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/g98EkbyZbbkyMi8o/images/app_ui/demo_custom_chart_histogram.png?fit=max&auto=format&n=g98EkbyZbbkyMi8o&q=85&s=2c3e77548fa02c51b0a0da90d8dd208b" alt="Histogramme personnalisé" width="1252" height="558" data-path="images/app_ui/demo_custom_chart_histogram.png" />
    </Frame>

    [Voir un exemple de rapport](https://wandb.ai/wandb/plots/reports/Custom-Histograms--VmlldzoyNzE0NzM) ou [essayer un notebook Google Colab d'exemple](https://tiny.cc/custom-charts).
  </Tab>

  <Tab title="Courbe précision-rappel">
    `wandb.plot.pr_curve()`

    Créez une [courbe de précision-rappel](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_curve.html#sklearn.metrics.precision_recall_curve) en une seule ligne :

    ```python theme={null}
    with wandb.init() as run:
      plot = wandb.plot.pr_curve(ground_truth, predictions, labels=None, classes_to_plot=None)

      run.log({"pr": plot})
    ```

    Vous pouvez journaliser cela dès que votre code a accès à :

    * aux scores prédits d’un modèle (`predictions`) sur un ensemble d’exemples
    * aux étiquettes de référence correspondantes (`ground_truth`) pour ces exemples
    * (facultatif) à une liste d’étiquettes/noms de classes (`labels=["cat", "dog", "bird"...]` si l’indice d’étiquette 0 correspond à cat, 1 à dog, 2 à bird, etc.)
    * (facultatif) à un sous-ensemble des étiquettes à visualiser dans le graphique (toujours au format liste)

    <Frame>
      <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/g98EkbyZbbkyMi8o/images/app_ui/demo_average_precision_lines.png?fit=max&auto=format&n=g98EkbyZbbkyMi8o&q=85&s=37aa67b46201dcd0e2fa0f0c40fbec9a" alt="Courbes précision-rappel" width="852" height="441" data-path="images/app_ui/demo_average_precision_lines.png" />
    </Frame>

    [Voir un exemple de rapport](https://wandb.ai/wandb/plots/reports/Plot-Precision-Recall-Curves--VmlldzoyNjk1ODY) ou [essayer un notebook Google Colab d’exemple](https://colab.research.google.com/drive/1mS8ogA3LcZWOXchfJoMrboW3opY1A8BY?usp=sharing).
  </Tab>

  <Tab title="Courbe ROC">
    `wandb.plot.roc_curve()`

    Créez une [courbe ROC](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html#sklearn.metrics.roc_curve) en une seule ligne :

    ```python theme={null}
    with wandb.init() as run:
      # ground_truth est une liste d'étiquettes réelles, predictions est une liste de scores prédits
      ground_truth = [0, 1, 0, 1, 0, 1]
      predictions = [0.1, 0.4, 0.35, 0.8, 0.7, 0.9]

      # Créer le graphique de la courbe ROC
      # labels est une liste facultative de noms de classes, classes_to_plot est un sous-ensemble facultatif de ces étiquettes à visualiser
      plot = wandb.plot.roc_curve(
          ground_truth, predictions, labels=None, classes_to_plot=None
      )

      run.log({"roc": plot})
    ```

    Vous pouvez journaliser ces données chaque fois que votre code a accès à :

    * aux scores de prédiction d’un modèle (`predictions`) sur un ensemble d’exemples
    * aux étiquettes de vérité terrain correspondantes (`ground_truth`) pour ces exemples
    * (facultatif) à une liste des étiquettes/noms de classes (`labels=["cat", "dog", "bird"...]` si l’indice d’étiquette 0 correspond à chat, 1 = chien, 2 = oiseau, etc.)
    * (facultatif) à un sous-ensemble de ces étiquettes (toujours au format liste) à visualiser sur le graphique

    <Frame>
      <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/g98EkbyZbbkyMi8o/images/app_ui/demo_custom_chart_roc_curve.png?fit=max&auto=format&n=g98EkbyZbbkyMi8o&q=85&s=a6b519ea9bf0659832cbe2973873db3f" alt="Courbe ROC" width="1338" height="788" data-path="images/app_ui/demo_custom_chart_roc_curve.png" />
    </Frame>

    [Voir un exemple de Report](https://wandb.ai/wandb/plots/reports/Plot-ROC-Curves--VmlldzoyNjk3MDE) ou [essayer un notebook Google Colab d’exemple](https://colab.research.google.com/drive/1_RMppCqsA8XInV_jhJz32NCZG6Z5t1RO?usp=sharing).
  </Tab>
</Tabs>

<div id="custom-presets">
  ### Préréglages personnalisés
</div>

Modifiez un préréglage intégré, ou créez un nouveau préréglage, puis enregistrez le graphique. Utilisez l’ID du graphique pour journaliser des données dans ce préréglage personnalisé directement depuis votre script. [Essayez un notebook d’exemple Google Colab](https://tiny.cc/custom-charts).

```python theme={null}
# Créer un tableau avec les colonnes à tracer
table = wandb.Table(data=data, columns=["step", "height"])

# Associer les colonnes du tableau aux champs du graphique
fields = {"x": "step", "value": "height"}

# Utiliser le tableau pour remplir le nouveau préréglage de graphique personnalisé
# Pour utiliser votre propre préréglage de graphique enregistré, modifiez le vega_spec_name
my_custom_chart = wandb.plot_table(
    vega_spec_name="carey/new_chart",
    data_table=table,
    fields=fields,
)
```

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/g98EkbyZbbkyMi8o/images/app_ui/custom_presets.png?fit=max&auto=format&n=g98EkbyZbbkyMi8o&q=85&s=f7106f322c9b354356c8f928b52548ca" alt="Préréglages personnalisés de graphiques" max-width="90%" width="2946" height="728" data-path="images/app_ui/custom_presets.png" />
</Frame>

<div id="log-data">
  ## Journaliser des données
</div>

Vous pouvez journaliser les types de données suivants depuis votre script et les utiliser dans un graphique personnalisé :

* **Config** : paramètres initiaux de votre expérience (vos variables indépendantes). Cela inclut tous les champs nommés que vous avez journalisés comme clés dans `wandb.Run.config` au début de votre entraînement. Par exemple : `wandb.Run.config.learning_rate = 0.0001`
* **Summary** : valeurs uniques journalisées pendant l’entraînement (vos résultats ou variables dépendantes). Par exemple, `wandb.Run.log({"val_acc" : 0.8})`. Si vous écrivez dans cette clé plusieurs fois pendant l’entraînement via `wandb.Run.log()`, la valeur de Summary est définie sur la dernière valeur de cette clé.
* **History** : la série temporelle complète du scalaire journalisé est disponible dans la requête via le champ `history`
* **summaryTable** : si vous devez journaliser une liste de plusieurs valeurs, utilisez `wandb.Table()` pour journaliser ces données, puis interrogez-la dans votre panneau personnalisé.
* **historyTable** : si vous devez consulter les données d’historique, interrogez `historyTable` dans le panneau de votre graphique personnalisé. Chaque fois que vous appelez `wandb.Table()` ou journalisez un graphique personnalisé, vous créez un nouveau tableau dans l’historique pour cette étape.

<div id="how-to-log-a-custom-table">
  ### Comment journaliser un tableau personnalisé
</div>

Utilisez `wandb.Table()` pour journaliser vos données sous la forme d’un tableau 2D. En général, chaque ligne de ce tableau représente un point de données, et chaque colonne correspond aux champs/dimensions pertinents de chaque point de données que vous souhaitez représenter. Lorsque vous configurez un panneau personnalisé, l’intégralité du tableau est accessible via la clé nommée transmise à `wandb.Run.log()` (`custom_data_table` ci-dessous), et chaque champ individuel est accessible via les noms de colonne (`x`, `y` et `z`). Vous pouvez journaliser des tableaux à plusieurs étapes au cours de votre expérience. La taille maximale de chaque tableau est de 10 000 lignes. [Essayez un exemple dans Google Colab](https://tiny.cc/custom-charts).

```python theme={null}
with wandb.init() as run:
  # Enregistrement d'un tableau de données personnalisé
  my_custom_data = [[x1, y1, z1], [x2, y2, z2]]
  run.log(
      {"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])}
  )
```

<div id="customize-the-chart">
  ## Personnaliser le graphique
</div>

Pour commencer, ajoutez un nouveau graphique personnalisé, puis modifiez la requête pour sélectionner les données à partir de vos runs visibles. La requête utilise [GraphQL](https://graphql.org) pour récupérer des données à partir des champs configuration, summary et historique de vos runs.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/g98EkbyZbbkyMi8o/images/app_ui/customize_chart.gif?s=29b7fe50cabaf15655c2b107db7306dc" alt="Création d'un graphique personnalisé" max-width="90%" width="1942" height="1334" data-path="images/app_ui/customize_chart.gif" />
</Frame>

<div id="custom-visualizations">
  ### Visualisations personnalisées
</div>

Sélectionnez **Chart** dans le coin supérieur droit pour partir d’un préréglage par défaut. Ensuite, sélectionnez **Chart fields** pour associer les données extraites de la requête aux champs correspondants de votre graphique.

L’image suivante montre comment sélectionner une métrique, puis l’associer aux champs du diagramme à barres ci-dessous.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/g98EkbyZbbkyMi8o/images/app_ui/demo_make_a_custom_chart_bar_chart.gif?s=55e8ccefcb9125d9758a42f02d5eab09" alt="Création d'un diagramme à barres personnalisé" max-width="90%" width="2804" height="1588" data-path="images/app_ui/demo_make_a_custom_chart_bar_chart.gif" />
</Frame>

<div id="how-to-edit-vega">
  ### Comment modifier Vega
</div>

Cliquez sur **Modifier** en haut du panneau pour passer en mode d’édition [Vega](https://vega.github.io/vega/). Vous pouvez y définir une [spécification Vega](https://vega.github.io/vega/docs/specification/) qui crée un graphique interactif dans l’interface. Vous pouvez modifier n’importe quel aspect du graphique. Par exemple, vous pouvez modifier le titre, choisir une autre palette de couleurs ou afficher les courbes sous forme d’une série de points plutôt que de lignes reliées. Vous pouvez également modifier les données elles-mêmes, par exemple en utilisant une transformation Vega pour répartir un tableau de valeurs en classes dans un histogramme. L’aperçu du panneau se met à jour de manière interactive, ce qui vous permet de voir l’effet de vos modifications à mesure que vous modifiez la spécification Vega ou la requête. Reportez-vous à la [documentation et aux tutoriels Vega ](https://vega.github.io/vega/).

**Références de champ**

Pour importer des données de W\&B dans votre graphique, ajoutez des chaînes de caractères de la forme `"${field:<field-name>}"` n’importe où dans votre spécification Vega. Cela crée une liste déroulante dans la zone **Champs du graphique** à droite, que les utilisateurs peuvent utiliser pour sélectionner une colonne de résultat de requête à mapper dans Vega.

Pour définir une valeur par défaut pour un champ, utilisez cette syntaxe : `"${field:<field-name>:<placeholder text>}"`

<div id="saving-chart-presets">
  ### Enregistrement des préréglages de graphique
</div>

Appliquez les modifications à un panneau de visualisation spécifique à l’aide du bouton situé en bas de la fenêtre modale. Vous pouvez également enregistrer la spécification Vega pour la réutiliser ailleurs dans votre projet. Pour enregistrer une définition de graphique réutilisable, cliquez sur **Save as** en haut de l’éditeur Vega, puis donnez un nom à votre préréglage.

<div id="articles-and-guides">
  ## Articles et guides
</div>

1. [L’IDE de visualisation en machine learning de W\&B](https://wandb.ai/wandb/posts/reports/The-W-B-Machine-Learning-Visualization-IDE--VmlldzoyNjk3Nzg)
2. [Visualiser des modèles de NLP basés sur l’attention](https://wandb.ai/kylegoyette/gradientsandtranslation2/reports/Visualizing-NLP-Attention-Based-Models-Using-Custom-Charts--VmlldzoyNjg2MjM)
3. [Visualiser l’effet de l’attention sur le flux des gradients](https://wandb.ai/kylegoyette/gradientsandtranslation/reports/Visualizing-The-Effect-of-Attention-on-Gradient-Flow-Using-Custom-Charts--VmlldzoyNjg1NDg)
4. [Journaliser des courbes arbitraires](https://wandb.ai/stacey/presets/reports/Logging-Arbitrary-Curves--VmlldzoyNzQyMzA)

<div id="common-use-cases">
  ## Cas d’usage courants
</div>

* Personnaliser des graphiques en barres avec des barres d’erreur
* Afficher des métriques de validation du modèle qui nécessitent des coordonnées x-y spécifiques (comme les courbes précision-rappel)
* Superposer sous forme d’histogrammes des distributions de données issues de deux modèles ou expériences différents
* Afficher l’évolution d’une métrique à partir d’instantanés pris à différents moments de l’entraînement
* Créer une visualisation unique qui n’est pas encore disponible dans W\&B (et, espérons-le, la partager avec tout le monde)
