Как установить микширование для максимального значения, отображаемого по оси 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 ответ
Просто вычислите домен самостоятельно, вместо того, чтобы полагаться на автоматизированную шкалу. Если
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
.