【问题标题】:dc.js/d3.js - min/max value from group per categorydc.js/d3.js - 每个类别的组的最小值/最大值
【发布时间】:2015-10-26 19:41:27
【问题描述】:

我讨厌创建一个新帖子来问这个问题,但由于我还是新手,我还不能对帖子发表评论。

我基本上和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");

【问题讨论】:

  • 到目前为止你尝试过什么?如果您已经有了维度和组,那么链接问题中的答案非常全面。如果您卡在前面的步骤中,请告诉我们您到目前为止做了什么,哪些没有奏效,人们会尽最大努力提供帮助。
  • 我试过了: var dateDim = fact.dimension(function (d) {return d3.time.day(d.date);}); var dateDimGroup = reductio().min(function (d) { return d.amount; })(dateDim.group());但这并没有做到。我不知道该怎么办......
  • 所以 dateDimGroup.all() 没有给你每天的最低限度?我希望它能做到这一点。或者您不确定如何将其放入 dc.js 图表中?
  • 顺便说一句,看起来你的 d.amount 是一个字符串,所以你实际上想要var dateDimGroup = reductio().min(function (d) { return +d.amount; })(dateDim.group()); 以便它把它排序为一个数字。
  • 我添加了数据以更好地反映我所拥有的内容,并在问题中添加了代码。我错过了什么?我收到错误“Uncaught TypeError: a.group.all is not a function (dc.min.js:20)”

标签: javascript d3.js graph charts 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());

【讨论】:

  • 我有 "return +d.amount" 但我仍然收到错误消息 "TypeError: a.group.all is not a function (dc.min.js:20)"
  • 我修好了括号。问题..但现在图表是空白的。 ://
  • 我将 .valueAccessor(function(d) {return d.value.min;}) 添加到我的图形变量中并修复了它。
  • max 是如何工作的?当我应该看到最大值时,我没有看到。
  • 请在 JSFiddle 或类似的东西上创建一个工作示例,我会很高兴看到它!至少,您需要在 SO 上发布您的完整代码,以便我回答有关 max 的问题。在这种情况下可能最好打开一个新问题。
猜你喜欢
  • 1970-01-01
  • 2020-10-22
  • 2014-03-12
  • 2013-12-04
  • 1970-01-01
  • 2013-10-24
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多