d3.js & nvd3.js - как установить диапазон осей y
Я пытаюсь установить диапазон оси y диаграммы от 1-100.
проконсультировался с документацией API и нашел возможное решение с axis.tickValues как видно здесь
https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-tickValues
однако использование этой опции не работает. Читайте дальше на странице документации, связанной выше в разделе axis.tickSize, следующая строка была замечена
конечные тики определяются экстент домена связанной шкалы,
и являются частью созданного домена пути, а не галочкой
поэтому я считаю, что установка min и max диапазона не может быть выполнена через параметр оси.
любые идеи, где я могу указать диапазон?
6 ответов:
нашел решение.
добавление
.forceY([0,100])для создания экземпляра диаграммы заставляет ось принимать диапазон, указанный в массиве.из примера здесь http://nvd3.org/livecode/#codemirrorNav
добавление
.forceY([0,100])для работы переменной диаграммы.
как следует из названия, это добавляет значения в массиве к вашему
yдомен, он не устанавливает домен y в[0,100]. Так что если вы установите это в[0,100]и домен ваших данных-10до110домен будет[-10,110].теперь, если вы хотите, чтобы домен был
[0,100]даже если ваши данные больше, вы можете использоватьchart.yDomain([0,100])... Но обычно вы хотите, чтобы ваш домен включал или ваши данные, поэтому я настоятельно рекомендую использовать диаграмму.Форси вместоchart.yDomain. Как вы смотрите, одно из самых распространенных применений forceY -forceY([0])сделать 0 всегда в домен.надеюсь, что это поможет вам понять, что функция на самом деле делает, и arboc7, это должно объяснить, почему он не работает в создании диапазона меньше, чем набор данных.
для сложенных диаграмм,
.forceY([0,100])не работает. Вместо того, чтобы использовать.yDomain([0,100])
Если вы имеете в виду задание
y-domain(диапазон чисел, которые должны отображаться) для диаграмм с накоплением областей, это работает для меня:nv.models.stackedAreaChart() .x(function(d) {...}) .y(function(d) {...}) .yDomain([0, maxY]) ...
Я пробовал так:
chart.forceY([DataMin, DataMax]);Datamin и Datamax нужно вычислить из массива. Кроме того, для динамической настройки точек оси при применении фильтра необходимо настроить события щелчка фильтра, такие как:
$('g.nv-series').click(function() { //Calculate DataMin, DataMax from the data array chart.forceY([DataMin, DataMax]); });поэтому график будет корректироваться каждый раз, когда применяется фильтр.
У меня была аналогичная проблема, и я решил ее, явно определив домен в yScale yAxis, т. е.
var yscale = d3.scale.linear() .domain([0,100]) .range([250, 0]); var yAxis = d3.svg.axis() .scale(yscale);
Comments