我使用crossfilter将各种数据列表绘制成直方图。该项目的一些值比其他值高得多,我热衷于以对数方式绘制直方图。
有没有一种方法可以在调用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);
};发布于 2012-12-23 23:45:45
为什么不直接使用对数标度作为输出呢?参见d3.scale.log。假设您正在使用crossfilter页面上的barChart,您只需将this line更改为使用对数刻度而不是线性刻度。
https://stackoverflow.com/questions/13974900
复制相似问题