我正在使用x軸上的時間標尺的條形圖表上工作。D3與時間標度問題,計算項目的位置
每個柱代表當月的所有日期都設置好的如YYYY-MM,當我加載數據我分析它:
var parseDate = d3.time.format("%Y-%m").parse;
的問題是,每個月有着怎樣不同的天量的,在一些酒吧比較接近的其他人而不是所有相同的保證金,你可以在這個截圖中看到:
在這裏你可以找到的代碼,http://tributary.io/inlet/8700564
由於
我正在使用x軸上的時間標尺的條形圖表上工作。D3與時間標度問題,計算項目的位置
每個柱代表當月的所有日期都設置好的如YYYY-MM,當我加載數據我分析它:
var parseDate = d3.time.format("%Y-%m").parse;
的問題是,每個月有着怎樣不同的天量的,在一些酒吧比較接近的其他人而不是所有相同的保證金,你可以在這個截圖中看到:
在這裏你可以找到的代碼,http://tributary.io/inlet/8700564
由於
您有兩種選擇:要麼使用序數(類別)比例爲x軸,這將給所有條的寬度相同,或設定各條單獨基於所述長度的寬度這個月。
要計算月份的長度,可以使用d3 time intervals來獲取下個月的開始日期。然後,寬度就是xScale上兩個日期位置之間的差異,可能通過填充進行調整,以在條之間留出一些空間。
rect.attr("x", function(d){return xScale(d.date) + padding;})
.attr("width", function(d){
return xScale(d3.time.month.offset(d.date, 1))
- xScale(d.date)
- 2*padding;
});
問題是不是酒吧的寬度,它是酒吧之間的空間。如果你看到第二個(二月)和第三個(三月)之間沒有空間(因爲二月有28天),但在其他空間之間有一個空間,但它不同(大約1像素和一些2像素aprox)有30天或31天。 –
根據您添加的「填充」,我給出的方法會給出相等的間距,方法是通過改變條寬以適應月份的寬度。如果你想要等間距*和*等寬直線,可以使用序數比例,就像大多數條形圖的例子一樣,[像這樣](http://bl.ocks.org/mbostock/3885304)。 – AmeliaBR
y軸上的數據是什麼?根據它是什麼,我們可以規範化每個元素的寬度。例如X在某個月發生了多少次。其本月的銷售額爲 –
。每個月只會有一個酒吧。 –
由於本月的天數無關緊要,因此簡單地將每個欄的寬度設置爲某個靜態值。例如,它們都可以是40個像素。改變第124行:'var barWidth = 40;'它們的寬度都是一樣的。 http://tributary.io/inlet/8716416 –