Как правильно отображать отрицательные числа в Protovis?

Для простейшего случая использования, гистограммы со значениями в диапазоне от -10 до 10, как можно правильно закодировать это с помощью библиотеки диаграмм Protovis JavaScript?

Под чистотой я подразумеваю центрирование оси, отображение меток осей x и y и представление значений столбца диаграммы, где отрицательные значения находятся ниже оси y, а положительные значения превышают ось y.


person Chris Lukic    schedule 21.07.2011    source источник


Ответы (1)


Вот рабочий пример: http://jsfiddle.net/nrabinowitz/yk5By/3/

Важными частями этого являются следующие:

  • Создайте шкалу по оси X, идущую от вашего минимального значения к максимальному значению (в вашем случае это будет pv.Scale.linear(-10,10).range(0,w); в моем примере я вычисляю минимальное и максимальное значение на основе данных).

  • Основание ширины полосы на абсолютном расстоянии от базы от 0:

    .width(function(d) { return Math.abs(x(d) - x(0)); })
    
  • Затем отрегулируйте свойство .left() в зависимости от того, является ли датум положительным или отрицательным:

    .left(function(d) { return d > 0 ? x(0) : x(0) - this.width(); });
    
  • Поскольку мы используем простую шкалу оси X, добавление меток оси очень просто:

    vis.add(pv.Label)
        .data(x.ticks()) // you could also use pv.range(min, max, 1) here
        .left(x);
    
person nrabinowitz    schedule 21.07.2011
comment
Гораздо чище, чем то, что я смог придумать. Ницца. Полный ответ. Спасибо. - person Chris Lukic; 22.07.2011