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);
    };
4

1 に答える 1

0

出力に対数スケールを使用しないのはなぜですか? を参照してくださいd3.scale.logbarChartクロスフィルター ページで を使用していると仮定すると、線形スケールではなく対数スケールを使用するようにこの行を変更するだけです。

于 2012-12-23T15:45:45.213 に答える