2012-12-20 52 views
0

我正在使用交叉過濾器將各種數據列表繪製成直方圖。一些項目的價值比其他人高很多,我熱衷於以對數形式繪製直方圖。交叉過濾器中的對數圖表

在reduceSum被調用之後,有什麼辦法可以將所有求和項計數轉換爲對數值?我熱衷於像

Math.log(d.count)/Math.LN10; 

添加到以下幾點:

var crossfiltered_data = crossfilter(data), 
    all = crossfiltered_data.groupAll(), 
    item_labels = crossfiltered_data.dimension(function(d) { return d.name; }), 
    items_group = hour.group().reduceSum(function(d) { 
     return d.count 
    }), 
    charts = [ 
     barChart(on_range_change) 
      .dimension(item_labels) 
      .group(items_group) 
      .x(d3.scale.linear() 
      .domain([domain_start, domain_end]) 
      .rangeRound([0, 240])), 
    ], 
    chart = d3.selectAll(target) 
     .data(charts) 
     .each(function(chart) { 
      chart .on("brush", renderAll) 
        .on("brushend", renderAll); 
     }), 
    render = function(method) { 
      d3.select(this).call(method); 
    }, 
    renderAll = function(event) { 
     chart.each(render); 
    }; 

回答

0

爲什麼不直接使用對數刻度輸出?請參閱d3.scale.log。假設您在交叉過濾器頁面上使用barChart,則只需更改this line即可使用日誌比例而不是線性比例。