2013-04-14 29 views
3

我很确定如果我能找到一个示例显示我正在尝试做什么,我可以对其进行反向工程/重新实现。有没有人看到一个例子显示在D3JS中线性和对数刻度之间的平滑/动画过渡?示例显示D3JS中线性和对数比例之间的动画转换?

我有两个秤都独立工作,但我必须重新加载页面来更改比例。

我的Google技巧让我失望!

非常感谢。

+0

为什么不逐步应用到你的坐标轴上,函数'f(x)= t * x ^(1/t)'对于从'0(+ epsilon)到'1'范围内的't'......那应该在日志和线性之间插值。一个对数函数就是上面的函数,它是在向零的极限处取得的。 – WhitAngl

+0

我不确定如何在不刷新页面的情况下实际更改比例。原则上,我想我可以用这个函数来定义一个比例尺,但是我怎样才能重新生成它们之间的比例和转换? – user986122

回答

7

这里是概念证明jsfiddle。您只需重新选择数据点并使用新比例重新绘制数据点即可。对于轴标签,转换更简单 - 只需再次调用轴功能即可。下面的相关摘录。

// change to log scale... 
yScale = d3.scale.log().domain([1, 100]).range([dim-padding,padding]); 

svg.selectAll("circle").data(data) 
    .transition().delay(1000).duration(1000) 
    .attr("cx", function(d) { return xScale(d); }) 
    .attr("cy", function(d) { return yScale(d); }); 

svg.selectAll(".y") 
    .transition().delay(1000).duration(1000) 
    .call(yAxis.scale(yScale)); 

您可能需要仔细研究如何生成标签以使其看起来“很好”,但原则上d3会照顾整个转换。

+0

非常感谢!你钉了它!我不知道为什么我认为我根本不需要修改数据,但现在有意义。 – user986122