2014-12-15 4 views
0

Как я могу использовать функцию reduceSum crossfilter в leaflet.js дляКак использовать reduceSum DC в 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?

Благодаря

+0

Gordon определил наиболее значительную проблему с вашими данными, разделяющими табуляцию, но 'd3.csv()' в вашем примере выше ищет значения, разделенные запятыми. Sidenote: Вы проверили, являются ли значения числами или строками? – kwah

ответ

1

reduceSum часть должна работать нормально, так как это просто другая функция crossfilter.

Вы уверены, что данные верно читают? Вы заявляете, что это файл tsv и показать код, который выглядит как разделенный табуляцией, но затем вы используете d3.csv, чтобы загрузить его, что будет иметь довольно плохие последствия, учитывая, что в середине второго поля есть запятая ,

Пожалуйста, попробуйте console.log(data) после того, как ваши данные будут загружены и убедитесь, что они правильно загружены.

Кроме того, вы не указываете, с какими проблемами вы сталкиваетесь. «Это не работает» не помогает нам.

 Смежные вопросы

  • Нет связанных вопросов^_^