0

我正在尝试使用对数刻度(1,10,100 ..)创建一个 d3 图表。我使用了他们的功能和调用但没有太大帮助。

var x = d3.scale.log()
    .domain([1,10])
    .range([0, width]);

var y = d3.scale.log()
    .domain([1,10])
    .range([height, 0]);

var color = d3.scale.category10();

var xAxis = d3.svg.axis()
    .scale(x)   
    .orient("bottom");

var yAxis = d3.svg.axis()
    .scale(y)   
    .orient("left");

var line = d3.svg.line()
    .x(function(d) { return x(d[xAxxis]); })
    .y(function(d) { return y(d[yAxxis]); });
var svg = d3.select("#"+this.divid).append("svg")
    .attr("width", width + margin.left + margin.right)
    .attr("height", height + margin.top + margin.bottom)
  .append("g")
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

x.domain(d3.extent(totalArray, function(d) { return d[xAxxis]; })).nice(); 
y.domain(d3.extent(totalArray, function(d) { return d[yAxxis]; })).nice(); 

有什么办法可以用 1e+0,10e+0,100e+0 而不是 1e+0,2e+0,3e+0 创建轴

4

1 回答 1

1

您可以使用tick()ortickValues()方法控制轴呈现的标签,具体取决于您要如何进行。有关详细信息,请参阅d3 的 API 文档。另外,请注意,对数刻度的tick()方法不带参数,因此您可能不得不使用其他方法,tickValues()尽管其他方法可能会派上用场进行格式化。

于 2012-12-11T15:40:10.840 回答