Как установить микширование для максимального значения, отображаемого по оси Y в vega lite

Я хочу установить минимум для максимального значения, отображаемого на линейной диаграмме. Например, он всегда должен отображать значения от 0 до 100 по оси Y, что-то вроде следующего:

Я достиг этого с помощью:

      vl.y().fieldQ('d').scale({"domain":[0,2]}),

как видно из приведенного ниже примера (пожалуйста, запустите приведенный ниже пример, чтобы увидеть, как отображается линейная диаграмма):

Как я могу заставить vega lite расширять ось Y (расширять от «0 до 2» до «от 0 до 3,38») всякий раз, когда точка данных выходит за пределы допустимого диапазона, но всегда показывать некоторый фиксированный диапазон (то есть первый график показывал диапазон от «0 до 2» "хотя максимальное значение в данных было 1).

Ссылка:

  1. https://vega.github.io/vega-lite/docs/scale.html

1 ответ

Просто вычислите домен самостоятельно, вместо того, чтобы полагаться на автоматизированную шкалу. Если dataэто просто массив значений, тогда

      data.reduce((domain, d) => ([
  Math.min(domain[0], d),
  Math.max(domain[1], d)
]), [data[0], data[0]])

вычисляет домен. Если вы хотите расширить это до [minValue, maxValue]делать

      data.reduce((domain, d) => ([
  Math.min(domain[0], d, minValue),
  Math.max(domain[1], d, maxValue)
]), [data[0], data[0]])

Если d3уже находится в вашем списке зависимостей, вы можете использовать один из d3.min, d3.max, d3.extentдля удобства вместо встроенного Array.reduce.

Другие вопросы по тегам