2 votes

Affichage d'une règle horizontale à valeur constante dans Vega-Lite, ne s'affiche pas

J'essaie d'afficher une règle horizontale à une valeur constante dans Vega-Lite, sans succès. Voici le code (peut être collé en https://vega.github.io/editor/#/ ):

{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",

  "encoding": {
    "x": {"field": "ts", "type": "temporal"},
    "y": {"field": "a", "type": "quantitative"}
  },

  "layer": [
    {
      "data": {
        "values": [
          {"ts": "2021-11-26", "a": 0.16},
          {"ts": "2021-11-28", "a": 0.12}
        ]
      },
      "mark": { "type": "point" }
    },

    {
      "data": { "values": [] },
      "mark": {"type": "rule", "color": "red"},
      "encoding": {"y": {"datum": 0.15, "type": "quantitative"}}
    }
  ]
}

Dans ce code, j'utilise une deuxième couche pour superposer une règle pour une valeur constante, mais elle ne s'affiche pas. Avez-vous une idée ?

2voto

jakevdp Points 4711

Il y a deux problèmes ici :

  1. Vos cartes d'encodage de premier niveau x au champ ts mais "data": { "values": [] }, n'a pas de champ nommé ts L'encodage est donc indéfini et aucune marque n'est dessinée.

  2. En datum est appliqué à chaque entrée de l'ensemble de données associé, mais votre ensemble de données a une longueur de 0, et il n'y a donc aucune entrée. Vous pouvez utiliser "data": { "values": [{}] } à la place.

En résolvant ces deux problèmes, on obtient ce qui suit ( ouvrir dans l'éditeur ):

{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
  "layer": [
    {
      "data": {
        "values": [
          {"ts": "2021-11-26", "a": 0.16},
          {"ts": "2021-11-28", "a": 0.12}
        ]
      },
      "mark": {"type": "point"},
      "encoding": {
        "x": {"field": "ts", "type": "temporal"},
        "y": {"field": "a", "type": "quantitative"}
      }
    },
    {
      "data": {"values": [{}]},
      "mark": {"type": "rule", "color": "red"},
      "encoding": {"y": {"datum": 0.15, "type": "quantitative"}}
    }
  ]
}

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X