我的數據是這樣的......是否可以在動態域的有序範圍上使用rangeBand()?
var data = [{name:'a', value : 97},
{name:'b', value : 24},
{name:'c', value : 10}];
我有這樣創造了一個有序的規模......
var y = d3.scale.ordinal().rangeBands([0, 30 * data.length]);
,我用它來創建這樣一個基本的圖...
chart.selectAll("rect")
.data(data)
.enter().append("svg:rect")
.attr("y", function(d,i){ return y(d.name);})
.attr("width", function(d,i){ return x(d.value);})
.attr("height", y.rangeBand());
按照D3文檔(here)你沒有指定域的順序量表,它會得到填充,當你試圖使用它。然而,在我的情況下,y(d.name)總是返回0,而y.rangeBand()會引發異常,即使當我查看域數組已被填充到scale對象中時。
所以,我解決這個通過預先定義我的域名的工作......
.domain(data.map(function (d){ return d.name;}))
,但我希望能夠動態地添加到該域和現在如果我這樣做,這不是」 t擴展超出創建時設置的原始值。這甚至有可能嗎?
我對d3很新,所以我可能會在這裏丟失重要的東西。
我正在那樣做,但我忽略了將使用舊範圍值的現有元素轉換爲新範圍值。 – 2012-04-17 18:00:21
是否可以使用沿軸的rangeRoundBands和rangeBands設置最大數量的波段或點?例如,如果我動態更新沿軸的帶數,我希望能夠設置帶的數量,而不是用數據點數填充整個空間。因此,一週顯示7個樂隊,一個月顯示4個一年12個,而不是隻顯示沿軸的所有點? @mbostock – 2016-07-18 10:05:04