Les graphiques multilignes personnalisés
Utilisation et exemples pour wandb.plot.line_series()
Created on February 22|Last edited on February 2
Comment
Méthode : wandb.plot.line_series()
Enregistrez un graphique de lignes de série personnalisé nativement dans W&B :
wandb.log({"my_custom_id" : wandb.plot.line_series(xs=[0, 1, 2, 3, 4],ys=[[10, 20, 30, 40, 50], [0.5, 11, 72, 3, 41]],keys=["metric Y", "metric Z"],title="Two Random Metrics",xname="x units")})
Ce graphique personnalisé présente des lignes multiples, ou de multiples listes différentes de paires de coordonnées x-y, sur un ensemble partagé d’axes x-y. Vous trouverez ci-dessous deux exemples avec les paramètres par défaut et des données aléatoires. Vous avez la possibilité de balayer ces graphiques en effectuant un cliquer-glisser et de zoomer sur les plus petits détails (ex : les lignes trop rapprochées pour qu’on les distingue).
Random data sample
2
Exemple d’utilisation classique
J’applique un tutoriel sur TensorFlow sur les séries temporelles avec un jeu de données météorologiquessur 14 différentes caractéristiques telles que la température, la pression et l’humidité. Un petit sous-ensemble des données intégrales est chargé dans une structure de données Pandas nommée climate_data.
columns = ['T (degC)', 'p (mbar)', 'rho (g/m**3)']num_steps = 200xs = [ i for i in range(num_steps) ]ys= [ climate_data[c][:num_steps] for c in columns ]wandb.log({"weather_sample" : wandb.plot.line_series(xs=xs,ys=ys,keys=columns,title="Weather Metrics")})
Notez que les nombres de points x et de points y doivent exactement correspondre. Vous pouvez fournir une seule liste de xs correspondante à de multiples listes de ys, ou une liste individuelle de xs pour chaque liste ys. Si ces mesures de température ambiante/pression/densité avaient été prises à différents moments, nous aurions pu fournir trois listes différentes de valeurs x. Retrouvez la définition complète du graphique de lignes de série ici.
Étapes à suivre :
- pour chaque série de lignes que vous voulez tracer, trouvez les valeurs x et y et, un nom facultatifpour chaque série
- en gardant le même ordre, passez la(les) liste(s) de valeurs x dans xs, les listes des valeurs y dans ys, et les noms facultatifs dans keys
- passez ces arguments dans wandb.plot.line_series() (titre du graphique et titre facultatif de l’axe des x, l’abscisse) pour créer votre graphique sous la clé spécifiée plus haut (weather_sample). Pour visualiser plusieurs essais sur le même graphique, gardez constamment cette clé du graphique. Notez bien que le tableau en lui-même sera également enregistré dans la section « Media » de votre espace de travail, sous le nom de weather_sample_table.
Sample time series data
1
Utilisation personnalisée
Il est facile de personnaliser les graphiques de lignes de série en utilisant la grammaire de visualisation Vega. Ici, je compare plusieurs tranches temporelles sur le même ensemble d’axes pour mieux visualiser la variation dans les données. Vous pouvez voir les spécifications intégrales de Vega (définition pour chaque graphique) en passant la souris en haut à droite du graphique et en cliquant sur l’icône « œil ».
Quelques changements simples :
- changez l’étiquetage de ligne de sorte que la couleur corresponde à la clé de métrique et que les traits correspondent à la tranche de temps enregistrée. Intervertissez les valeurs de field (champ) sous strokeDash et color, de façon à ce que strokeDash contienne "field": "name" et que color contienne "field" : « ${field:lineKey} ». Supprimez l’entrée scale.
- éditez le titre principal, la légende et les axes pour qu’ils soient plus descriptifs : ajoutez "title": "Votre titre" pour les champs pertinents sous encoding.
Randomized time slices
3
Autres exemples : enregistrer des valeurs x différentes
Dans un cas simple, de multiples listes de valeur seront cartographiées en une seule liste de valeurs x. Ici, j’ai échantillonné trois mesures de tension de vapeur à différentes fréquences pour montrer un cas un peu plus complexe : passer une liste de valeurs x qui correspond à chaque liste de valeurs y. J’ai également changé "type" : "line" en "type" : "point" pour distinguer clairement les valeurs x.
Sur la ligne inférieure des graphiques, vous pouvez comparer l’efficacité de la visualisation/la puissance de groupage perceptuel en attribuant des couleurs aux données par ID d’échantillon (en bas à gauche) versus par type de métrique (en bas à droite).
Vapor pressure data
4
Comment éditer un préréglage pour créer votre propre graphique personnalisé
- Commencez à partir d’un type de graphique existant. Passez la souris en haut à droite d’un graphique personnalisé > Icône de crayon > Bouton « Éditer », en haut à gauche.
- Éditez directement ce JSON et visualisez le rendu des modifications des visuels correspondants sur la droite. Vous pouvez trouver une myriade d’exemples Vega utiles et inspirants en ligne.
- Vous pouvez remplir (facultativement) les champs de texte comme les titres personnalisés dans le menu déroulant sur la droite.
- Une fois que vous êtes satisfait de vos modifications, sauvegardez une nouvelle copie de votre graphique personnalisé pour de futures utilisations. Cliquez sur « Enregistrer sous » en haut à gauche et donnez un nouveau nom descriptif à votre type de graphique (en bonus, vous pouvez aussi éditer la description pour le retrouver facilement plus tard !). Il sera désormais disponible à la réutilisation sous votre entité utilisateur/équipe.
- Bonus : une fois que vous avez enregistré votre graphique personnalisé modifié en tant que préréglage, vous pouvez enregistrer des résultats dessus directement depuis Python via wandb.plot_table(vega_spec_name="your_username/your_custom_preset_name"). Plus de détails et d’exemples ici.
Spécifications Vega modifiées
Cette version de la spécification de série de lignes colorie les lignes par métrique plutôt que par essai, et contient des titres spécifiques.
{"$schema": "https://vega.github.io/schema/vega-lite/v4.json","description": "A plot for an arbitrary number of lines","data": {"name": "wandb"},"title": "Climate Data Sample","layer": [{"selection": {"grid": {"type": "interval","bind": "scales"}},"mark": {"type": "line", "interpolate": "linear"},"encoding": {"x":{"field": "${field:step}","type": "quantitative","title": "Time step of measure"},"y": {"field": "${field:lineVal}","title": "Value in indicated units","type": "quantitative"},"color": {"type": "nominal","field": "${field:lineKey}","title" : "Units of measure"},"strokeDash": {"type": "nominal","field": "name","title" : "Sample id"}}}]}
Questions-réponses
Merci d’avoir lu cet article ! Nous espérons que cela vous aidera à créer des graphiques personnalisés uniques et captivants. Si vous avez des questions, n’hésitez pas à les laisser dans les commentaires !
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.