我在d3.js中有一个简单的条形图,我想要条形宽度的对数刻度。在d3.js中,与Highcharts不同,必须先计算比例,然后才能指定比例。我已经做了大量研究,但没有找到适合此情况的计算和陈述的正确组合。
例如,尽管我可以使用预先计算的变量并将其替换为:
.attr(“ width”,precalculated_var_name)
但是不是。所以我尝试了这个:
var myscale = d3.scale.log()。domain([0.5,700]);
.attr(“ height”,function(d){return myscale(d);})
但是也不是。我尝试过的其他任何事情都无法给我正确的结果。
这是该项目上的javascript:
var dataArray = [23, 763];
var colors = [ "red", "green" ];
var names = [ "ABC", "DEF" ];
var svg = d3.select("svg.d3svg")
.attr("height", "20%")
.attr("width", "100%")
var bar = svg.selectAll("g")
.data(dataArray)
.enter().append("g")
var rect = bar.append('rect')
.attr("height", "7")
.attr("width", "250") // SPECIFY LOG SCALE HERE
.attr("y", function(d, i) { return (i * 40) + 50 })
.attr("x", "0")
.style("fill", function(d, i) { return colors[i] })
.attr("class", "d3bar");
var text = bar.append('text')
.attr("class", "text-svg")
.text (function(d, i) { return names[i] })
.attr("x", "0")
.attr("y", function(d, i) { return (i * 40) + 70 });
鉴于上面的JavaScript,为rect对象的宽度值指定对数刻度的最佳方法是什么?
非常感谢您的帮助。