如何在letlet.js中使用dc的reduceSum

问题描述 投票:1回答:1

如何将crossfilter的reduceSum函数用于leaflet.js

yurukov's dc.leaflet.js example中,他正在将reduceCount函数用于tsv文件格式。但是我想通过reduceSum使用数据总和。

这是我作为tsv的数据:

type geo say
wind 38.45330,28.55529 10
wind 38.45330,28.55529 10
solar 39.45330,28.55529 10

这是我的代码:

<script type="text/javascript" src="../js/d3.js"></script>
<script type="text/javascript" src="../js/crossfilter.js"></script>
<script type="text/javascript" src="../js/dc.js"></script>
<script type="text/javascript" src="../js/leaflet.js"></script>
<script type="text/javascript" src="../js/leaflet.markercluster.js"></script>
<script type="text/javascript" src="../js/dc.leaflet.js"></script>


<script type="text/javascript">
    /*     Markers      */

d3.csv("demo1.csv", function(data) {
  drawMarkerSelect(data);
});

function drawMarkerSelect(data) {
  var xf = crossfilter(data);

    var facilities = xf.dimension(function(d) { return d.geo; });
    var facilitiesGroup = facilities.group().reduceSum(function(d){return d.say});

  dc.leafletMarkerChart("#demo1 .map")
      .dimension(facilities)
      .group(facilitiesGroup)
      .width(1100)
        .height(600)
      .center([39,36])
      .zoom(6)
      .cluster(true);  

    var types = xf.dimension(function(d) { return d.type; });
    var typesGroup = types.group().reduceSum(function(d){return d.say});    


  dc.pieChart("#demo1 .pie")
      .dimension(types)
      .group(typesGroup)
      .width(200) 
        .height(200)
        .renderLabel(true)
        .renderTitle(true)
      .ordering(function (p) {
        return -p.value;
      });

    dc.renderAll();
} 



</script>

但是它不起作用。我们如何使用reduceSum?

谢谢

javascript leaflet dc.js crossfilter dc.leaflet.js
1个回答
0
投票

reduceSum部分应该可以正常工作,因为那只是一个不同的交叉滤波器功能。

您确定您的数据已正确读取?您声明它是一个tsv文件,并显示看起来像是用制表符分隔的代码,但是随后您使用了d3.csv来加载它,考虑到中间有逗号,这将带来非常糟糕的影响第二个字段。

加载数据后,请尝试console.log(data),并验证其是否正确加载。

而且,您也没有陈述遇到的问题。 “无效”对我们没有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.