возможно, ответ очень очевиден и не имеет ничего общего с библиотеками, кроме общего javascript, JQuery или Ajax.Я очень новичок в javascript, и я пытался реализовать панель инструментов, используя колбу в качестве внутреннего интерфейса.
Crossfilter и dc помогают мне выбирать диапазоны на графиках и видеть, как это влияет на весь набор данных.Если я добавлю:
<span class="filter"></span>
Он отобразит диапазон над графиком
Но это класс "фильтр""внутри объекта span, а не переменной или данных, которые я могу получить внутри кода.Ниже показано, что я использую для отображения графика (кстати, кнопка сброса вообще не отображается)
<div class='span6' id='dc-close-chart'>
<h4>
close
</h4>
<p>range:
<span class="filter">
<a class="reset" href="javascript:closeChart.filterAll();dc.redrawAll();" style="display: none;">
reset
</a>
</span>
</p>
</div>
Я бы хотел сделать следующее:
- Иметь доступ к этому диапазону и сохранять его как переменную, чтобы я мог получить к нему доступ и, возможно, опубликовать его с помощью кнопки отправки.
- Возможность заменить эту метку для текстового поля ввода, чтобы изменить диапазон и изменить фильтр.соответственно.
Я просматривал форумы crossfilter и dc.js, но не нашел ничего актуального, что я хочу сделать, возможно ли это вообще?
Ниже кода JS я могу создать переменную, которая фиксирует это?
var closeChart = dc.barChart("#dc-close-chart");
// set constants
var n_bins = 35;
d3.csv("/static/data2.csv", function (data) {
console.log(data);
data.forEach(function (d) {
d.close = d3.round(+d.close, 1);
});
// Run the data through crossfilter and load our 'facts'
var facts = crossfilter(data);
var all = facts.groupAll();
// count all the facts
dc.dataCount(".dc-data-count")
.dimension(facts)
.group(all);
// for Each chart numeric
var closeValue = facts.dimension(function (d) {
return d.close; // add the magnitude dimension
});
var closeValueGroupSum = closeValue.group()
.reduceSum(function (d) {
return d.close;
}); // sums
var closeValueGroupCount = closeValue.group()
.reduceCount(function (d) {
return d.close;
}) // counts
// extent
var closeExtent = d3.extent(data, function (d) {
return d.close;
});
// binwidth
var closebinWidth = (closeExtent[1] - closeExtent[0]) / n_bins;
//group
var closeGroup = closeValue.group(function (d) {
return Math.floor(d / closebinWidth) * closebinWidth;
});
// Setup the charts
// Magnitide Bar Graph Counted
closeChart.width(480)
.height(150)
.margins({
top: 10,
right: 10,
bottom: 20,
left: 40
})
.dimension(closeValue)
.group(closeGroup)
.transitionDuration(500)
.centerBar(true)
.gap(1) // 65 = norm
// .filter([3, 5])
.x(d3.scale.linear().domain(closeExtent).range([0, n_bins]))
.elasticY(true)
.xUnits(function () {
return n_bins;
})
.controlsUseVisibility(true)
.colors(['LimeGreen'])
.xAxis().tickFormat(function (v) {
return v;
});
// Render the Charts
dc.renderAll();
});