Что не так со встроенными значениями? - PullRequest
1 голос
/ 06 мая 2020

Демонстрация «линейной диаграммы» работает нормально и выражается в javascript, как в Get_started. html.

... но когда я заменяю поле «данные» из URL-адреса на встроенные значения , отображаются только оси, без диаграммы.

Работает: "data":{"url":"https://vega.github.io/vega-lite/examples/data/stocks.csv"},

Это не работает:

var vlSpec = {
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "description": "Google's stock price over time.",
  "data":  {"values": [
      {"symbol":"MSFT","date":"Jan 1 2000","price":39.81},
      {"symbol":"MSFT","date":"Feb 1 2000","price":36.35},
      {"symbol":"MSFT","date":"Mar 1 2000","price":43.22},
      {"symbol":"MSFT","date":"Apr 1 2000","price":28.37},
      {"symbol":"MSFT","date":"May 1 2000","price":25.45}
  ]},
  "transform": [{"filter": "datum.symbol==='GOOG'"}],
  "mark": "line",
  "encoding": {
    "x": {"field": "date", "type": "temporal"},
    "y": {"field": "price", "type": "quantitative"}
  }
};

Ошибка на консоли, не имеющая смысла:

WARN Бесконечный размер для поля «дата»: [Infinity, -Infinity]

Ответы [ 3 ]

1 голос
/ 06 мая 2020

Ваша спецификация содержит только строки с symbol="MSFT". Он также содержит преобразование фильтра {"filter": "datum.symbol==='GOOG'"}, которое удаляет все строки, кроме строк с symbol="GOOG". В результате не осталось данных для построения графика.

Предупреждение, которое вы видите, возникает из-за того, что экстент оси определяется из данных, а когда данных нет, экстент остается на [-Infinity, Infinity].

Если вы удалите или измените этот оператор фильтра, диаграмма будет работать. Например:

vlSpec = {
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "description": "Google's stock price over time.",
  "data":  {"values": [
      {"symbol":"MSFT","date":"Jan 1 2000","price":39.81},
      {"symbol":"MSFT","date":"Feb 1 2000","price":36.35},
      {"symbol":"MSFT","date":"Mar 1 2000","price":43.22},
      {"symbol":"MSFT","date":"Apr 1 2000","price":28.37},
      {"symbol":"MSFT","date":"May 1 2000","price":25.45}
  ]},
  "transform": [{"filter": "datum.symbol==='MSFT'"}],
  "mark": "line",
  "encoding": {
    "x": {"field": "date", "type": "temporal"},
    "y": {"field": "price", "type": "quantitative"}
  }
};

Результат выглядит так ( Открыть диаграмму в редакторе Vega ):

enter image description here

0 голосов
/ 06 мая 2020

Нужно только прокомментировать "magi c line"

// "transform": [{"filter": "datum.symbol==='GOOG'"}],


Пожалуйста, объясните! Это ответ Wiki

0 голосов
/ 06 мая 2020

Согласно Vega docs для типа Date, дата должна быть действительным Javascript Date объектом или отметкой времени.

Допустимым JavaScript Date объект или отметка времени. Поскольку JSON изначально не поддерживает значения даты, в спецификации Vega значение даты и времени может быть выражено либо как числовая c отметка времени (количество миллисекунд с эпохи UNIX, созданное Date.getTime ()) или с использованием выражения сигнала (например, {"signal": "datetime(2001, 2, 3)"})

...