2015-10-26 2 views
1

Ненавижу создавать новое сообщение, чтобы спросить об этом, но так как я все еще новичок, я не могу комментировать сообщения.dc.js/d3.js - min/max value from group for category

я в основном имеют один и тот же вопрос, как dc.js - min value from group per day

Но поскольку jsfiddle не вверх больше, я не могу видеть, как они решают этот вопрос.

var data = [ 
    {category: 'A', ..., amount: '13', categoryCount: 1}, 
    {category: 'A', ..., amount: '13', categoryCount: 0}, 
    {category: 'B', ..., amount: '10', categoryCount: 1}, 
    {category: 'A', ..., amount: '3', categoryCount: 1}, 
    {category: 'C', ..., amount: '27', categoryCount: 1}, 
    {category: 'A', ..., amount: '11', categoryCount: 1}, 
    {category: 'B', ..., amount: '18', categoryCount: 2}, 
    {category: 'C', ..., amount: '19', categoryCount: 1}, 
    {category: 'C', ..., amount: ' ', categoryCount: 1}, 
    {category: 'C', ..., amount: '22', categoryCount: 1} 
]; 

Я хотел бы иметь диаграмму области, содержащую минимальные (и максимальные) значения для каждой категории.

теперь у меня

var bar_graph = dc.barChart("#bar_chart"); 
var bar_graphDim = ndx.dimension(function(d) {return d.category;}); 
var bar_graphGroup = bar_graphDim.group().reduceSum(d.categoryCount); 
var dateDimGroup = reductio().min(function (d) { return +d.amount; })(bar_graphDim.group()); 
var dateDimFGroup = remove_empty_bins(dateDimGroup); 
bar_graph 
    .width(150).height(60) 
    .dimension(bar_graphDim) 
    .group(dateDimFGroup) 
    .valueAccessor(function(d) {return d.value.min;}) //added a solution 
    .renderHorizontalGridLines(true) 
    .gap(2) 
    .x(d3.scale.ordinal()) 
    .xUnits(dc.units.ordinal) 
    .elasticY(true) 
    .elasticX(true) 
    .yAxisLabel("counts"); 
var bar_graphGroupMax = bar_graphDim.group().reduceSum(d.categoryCount); 
var dateDimGroupMax = reductio().min(function (d) { return +d.amount; })(bar_graphDim.group()); 
var dateDimFGroupMax = remove_empty_bins(dateDimGroupMax); 
bar_graphMax 
    .width(150).height(60) 
    .dimension(bar_graphDim) 
    .group(dateDimFGroupMax) 
    .valueAccessor(function(d) {return d.value.max;}) 
    .renderHorizontalGridLines(true) 
    .gap(2) 
    .x(d3.scale.ordinal()) 
    .xUnits(dc.units.ordinal) 
    .elasticY(true) 
    .elasticX(true) 
    .yAxisLabel("counts"); 
+0

Что вы пробовали? Если у вас уже есть измерение и группа, тогда ответ в связанном вопросе довольно всеобъемлющий. Если вы застряли на более раннем этапе, дайте нам знать, что вы сделали до сих пор и что не работает, и люди сделают все возможное, чтобы помочь. –

+0

Я пробовал: var dateDim = facts.dimension (function (d) {return d3.time.day (d.date);}); var dateDimGroup = reductio(). Min (function (d) {return d.amount;}) (dateDim.group()); Но этого не делал. Я не уверен, что делать ... – Casey

+0

Так что dateDimGroup.all() не дает вам минимумов в день? Я ожидаю, что он это сделает. Или вы не знаете, как это сделать в диаграмме dc.js? –

ответ

1

Вы

var dateDimGroup = reductio().min(function (d) { return d.amount; }(dateDim.group()); 

Я не думаю, что даже исполняет, не так ли? Я хочу, чтобы вы имели:

var dateDimGroup = reductio().min(function (d) { return +d.amount; })(dateDim.group()); 
+0

У меня есть «return + d.amount», но я все еще получаю сообщение об ошибке «TypeError: a.group.all не является функцией (dc.min.js: 20)« – Casey

+0

Я исправил параметры parens. вопрос .. но теперь график пуст. :/ – Casey

+0

Я добавил .valueAccessor (function (d) {return d.value.min;}) к моим переменным графа и зафиксировал его. – Casey