Его немного сложнее выяснить решение, но как только вы получите, чтобы узнать это, его довольно прямо вперед.
Вам нужно просто обновить диаграмму, призывающую d3.select('#chart svg').datum(sendyouNewData)
Я использовал тот же код, как и в NVD3 site только дополнительный код, который я добавил был функция обновления диаграммы на кнопку мыши, о, и добавил ширину и высоту к графику.
Следующий код является проверенным кодом. Живой код here
Вашего HTML
<input type="button" id="change1" value="Change 1"/>
<input type="button" id="change2" value="Change 2"/>
<div id="chart">
<svg></svg>
</div>
Вашего JavaScript
var dynamic_lineWithFocusChart, lineWithFocusChart;
var width = 500,
height = 500;
nv.addGraph(function() {
var chart = nv.models.lineWithFocusChart().width(width).height(height);
chart.xAxis.tickFormat(d3.format(',f'));
chart.yAxis.tickFormat(d3.format(',.2f'));
chart.y2Axis.tickFormat(d3.format(',.2f'));
dynamic_lineWithFocusChart = d3.select('#chart svg').datum(testData());
dynamic_lineWithFocusChart.transition().duration(1000).call(chart).attr('width', width).attr('height', height);
nv.utils.windowResize(chart.update);
lineWithFocusChart = chart;
return chart;
});
/*
* Simple test data generator
*/
function testData() {
return stream_layers(3, 128, .1).map(function (data, i) {
return {
key: 'Stream' + i,
values: data
};
});
}
/*
* Update the Line Focus chart with the Button Click
*/
$("#change1,#change2 ").click(function() {
dynamic_lineWithFocusChart.datum(testData());
dynamic_lineWithFocusChart.transition().duration(1000).call(lineWithFocusChart);
dynamic_lineWithFocusChart.update
});
Надеется, что это отвечает на ваш вопрос: D
Спасибо за ответ! Я посмотрел на ваш пример, и это похоже на то, что я хочу, но все же немного другое. В идеале, когда я нажимаю на change1 или change2, это изменит видоискатель на другой диапазон и повлияет на основной график. Подумайте о чем-то подобном интерактивной биржевой диаграмме от Yahoo, где вы можете нажать на предустановленные диапазоны времени (1D, 5D и т. Д.), И это изменит диапазон видоискателя для вас. – Colinexl
@ user1924355 - Насколько я знаю, ваше требование не может быть выполнено с помощью NVD3.js, поскольку оно было создано с целью повторного использования диаграмм и компонентов диаграммы. Возможно, вам придется создать свою собственную версию, NVD3 дал вам отправную точку. Удачи. – shabeer90
Еще раз спасибо. Я решил использовать D3 напрямую, чтобы выполнить то, что я хотел. NVD3 кажется хорошей библиотекой, но не для наших целей. – Colinexl