2013-04-14 32 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