在numberDisplay dc.js中显示维度的最大值

在numberDisplay dc.js中显示维度的最大值,dc.js,crossfilter,Dc.js,Crossfilter,我有一个csv文件,其中包含几个城市的温度,格式如下: city maxTemp Vienna 25.5 Prague 24.4 Paris 24.3 Berlin 23.3 Athens 33.1 我正在创建一个仪表板,我想在numberDisplay中显示过滤的城市的最高温度(当单击其他DC.js图表时) 我已设法从维度中获取最大值,但在过滤城市时无法更改,我不知道应该使用哪个组和valueAccessor在numberDisplay中显示最大温度。我如何解决这个问题 以

我有一个csv文件,其中包含几个城市的温度,格式如下:

city    maxTemp
Vienna  25.5
Prague  24.4
Paris   24.3
Berlin  23.3
Athens  33.1
我正在创建一个仪表板,我想在
numberDisplay
中显示过滤的城市的最高温度(当单击其他DC.js图表时)

我已设法从维度中获取最大值,但在过滤城市时无法更改,我不知道应该使用哪个组和
valueAccessor
numberDisplay
中显示最大温度。我如何解决这个问题

以下是我尝试过的:

function show_avg_temp(ndx,element) {

   var maxTempDim = ndx.dimension(dc.pluck('maxTemp'));

   maxMaxTemp = maxTempDim.top(1)[0].maxTemp;

   console.log(maxMaxTemp);

   dc.numberDisplay(element)
      .group(??)
      .valueAccessor(??)
      .formatNumber(d3.format('.2'));
}
一点背景
numberDisplay
的一个令人困惑的地方是,它最适用于一个团队,但也适用于一个普通团队(有一些困难)

我们最近添加了一些方法来澄清
dataTable
dataCount
的类似问题,以及

无论如何,这还不是你需要的,因为。减少最大值的明显方法是查看每个增加的值是否大于当前最大值,但为了删除,基本上需要对所有内容进行排序

解决办法 所以,长话短说,正如你已经知道的:你所做的基本上是正确的,但是你需要一种方法将这个实时数字输入到
numberDisplay

最简单的方法是伪造groupAll对象将具有的
.value()
函数,并告诉
numberDisplay
值只是一个值:

function dim_max_groupAll(dim, field) {
  return {
    value: function() {
      return dim.top(1)[0][field];
    }
  };
}
numberDisplay
  .group(dim_max_groupAll(maxTempDim, 'maxTemp'))
  .valueAccessor(x => x);

这个“假groupAll”确保每当重新绘制
numberDisplay
时,都会从维度中获取新的顶部值。

@Elena,这是否有效?我没有测试它,但类似的问题以前也出现过(可能属于常见问题解答或某个地方的示例)。嗨,戈登,是的,它成功了!!我直到现在才能够测试它,这就是为什么我以前没有回答。非常感谢!!:)