记录轴刻度而不是格式化数据

时间:2014-04-03 17:35:03

标签: javascript d3.js

我正在尝试使用数据数组创建对数正态图,但是当我将对数比例应用于y轴时,它只会缩放轴刻度而不是绘制的实际数据。总之,所有数据都是线性绘制的,但轴刻度显示为log。以下是我的轴代码:

var y = d3.scale.log()
  .domain([.001,maxData])
  .range([graphHeight, 0]);            

var yAxis = d3.svg.axis()
  .scale(y)
  .orient("right")
  .ticks(20, ".2")
  .tickSize(-graphWidth,0,0);

svg.append("g")
  .attr("class", "yaxis")
  .attr("transform", "translate(" +graphWidth + ",0)")
  .call(yAxis)
  .append("text") 
  .attr("transform", "rotate(-90)")
  .attr("y", 70)
  .attr("x", -graphHeight/2)
  .attr("dy", ".71em")
  .style("text-anchor", "end")
  .text("YLabel");


var line = d3.svg.line()
.x(function(d,i) { 
return (i-0.5)*horizontalBarDistance; 
    })
.y(function(d) { 
    return graphHeight - d*100; 
    })


for (names in dataArrays)
 {
  svg.append("svg:path").attr("class","line").attr("d", line(dataArrays[names]));          
 } 

1 个答案:

答案 0 :(得分:0)

您必须在代码中使用比例才能有所作为。目前,除了将其分配给轴时,您的代码不包含对它的引用。你可能想要像

这样的东西
.y(function(d) { 
  return y(d); 
})

在你的线路生成器的定义中。