В d3.js вы можете установить ось x для использования d3.time.scale()
, а затем установить x.domain([start_date, end_date])
, и она "заполнит" любые отсутствующие даты, которые не находятся в данных с 0 значениями. Я хочу сделать то же самое с nvd3.js mulitBarChart
.
Этот код (может быть вставлен непосредственно в http://nvd3.org/livecode/#codemirrorNav) показывает гистограмму итогов по годам, отсутствуют значения за 2002 и 2003 годы. Я хочу установите масштаб d3.time.scale()
, а затем домен в первый и последний годы набора данных, чтобы отсутствующие годы автоматически добавлялись с 0 значениями. Как это сделать?
nv.addGraph(function() {
var chart = nv.models.multiBarChart();
chart.xAxis
.tickFormat(function(d){ return d3.time.format('%y')(new Date(d)); });
chart.yAxis
.tickFormat(d3.format(',f'));
chart.reduceXTicks(false);
chart.showControls(false);
var data = [{
'key': 'GB by year',
'values': [
{x: new Date().setFullYear('2001'), y: 0.12},
{x: new Date().setFullYear('2004'), y: 0.03},
{x: new Date().setFullYear('2005'), y: 0.53},
{x: new Date().setFullYear('2006'), y: 0.43},
{x: new Date().setFullYear('2007'), y: 5.5},
{x: new Date().setFullYear('2008'), y: 9.9},
{x: new Date().setFullYear('2009'), y: 26.85},
{x: new Date().setFullYear('2010'), y: 0.03},
{x: new Date().setFullYear('2011'), y: 0.12}
]
}];
d3.select('#chart svg')
.datum(data)
.transition().duration(500).call(chart);
nv.utils.windowResize(chart.update);
return chart;
});