d3.js:如何使用对数比例表示条形宽度?

时间:2018-09-26 21:58:33

标签: javascript d3.js

我在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对象的宽度值指定对数刻度的最佳方法是什么?

非常感谢您的帮助。

0 个答案:

没有答案