的jsfiddle: http://jsfiddle.net/PYeFP/添加在dc.js過濾器/ Crossfilter不更新圖表
我有一個條形圖設置一個由一天
tripVolume = dc.barChart("#trip-volume")
.width(980) // (optional) define chart width, :default = 200
.height(75) // (optional) define chart height, :default = 200
.transitionDuration(0) // (optional) define chart transition duration, :default = 500
.margins({ top: 10, right: 50, bottom: 30, left: 40 })
.dimension(tripsByDateDimension) // set dimension
.group(tripsByDateGroup) // set group
// (optional) whether chart should rescale y axis to fit data, :default = false
.elasticY(false)
// (optional) whether chart should rescale x axis to fit data, :default = false
.elasticX(false)
// define x scale
.x(d3.time.scale().domain([tripsByDateDimension.bottom(1)[0].startDate, tripsByDateDimension.top(1)[0].startDate ]))
// (optional) set filter brush rounding
.round(d3.time.day.round)
// define x axis units
.xUnits(d3.time.days)
// (optional) whether bar should be center to its x value, :default=false
.centerBar(true)
// (optional) render horizontal grid lines, :default=false
.renderHorizontalGridLines(true)
// (optional) render vertical grid lines, :default=false
.renderVerticalGridLines(true)
.brushOn(false);
該圖顯示的曲線圖旅行的用戶數很好,但我想用一些jQuery控件來過濾它。 當用戶選擇日期我試圖添加一個過濾器到圖表時,過濾器被添加,但圖表不會更改,即使我redraw()
或render()
。
這是crossfilter如何設置:
tripsCx = crossfilter(data.rows);
var allTripsGroup = tripsCx.groupAll();
var tripsByDateDimension = tripsCx.dimension(function (d) { return d.startDate; });
var tripsByDateGroup = tripsByDateDimension.group(d3.time.day);
下面是一些我已經習慣了嘗試應用過濾器的方法:
這應該使用filterRange:
d.filter(d.dimension().top(20)[19], d.dimension().top(20)[0]);
FilterFunction:
d.filter(function (d) {
return d.getTime() > start.valueOf() && d.getTime() < end.valueOf();
});
FilterExact:
d.filter(d.dimension().top(20)[0]);
我還試圖繞過圖表和直接在尺寸應用濾波器:
d.dimension().filterFunction(function (d) {
return d.getTime() > start.valueOf() && d.getTime() < end.valueOf()
});
沒有我已經做使圖表來改變。
我開始認爲我對濾波器函數應該做什麼有錯誤的期望?
如何手動過濾維度中的數據以更新圖表? 我不想使用畫筆。 我將根據不同的標準過濾數據,我只是試圖讓簡單的案例工作。
我已經花了幾天的時間了,現在我不知道下一步該做什麼。
任何幫助將不勝感激。
謝謝,我註釋掉您應用的更新的jsfiddle和圖形過濾器還是改了行。更改X軸縮放似乎適用於條形圖,但我不認爲它會過濾底層數據。我特意詢問過濾器,因爲我希望它可以與所有dc js圖表配合使用。 x軸的另一個問題是我不能像filterFunction提供的那樣做更復雜的過濾器。但感謝您的答案。 – DannyLane
我明白你的意思了。讓我再嘗試一次 :)。將過濾器添加到維度而不是圖表似乎有所作爲。請問http://jsfiddle.net/PYeFP/8/爲你工作嗎? – Peter
這有點幫助我可以看到一個過濾器可以更新圖表。問題是創建了一個額外的維度,它不回答爲什麼我不能過濾我的startDate對象。我已經使用過濾器函數更新了小提琴,在日誌中可以看到元素數量從13變爲9,但圖形不會更新。 http://jsfiddle.net/PYeFP/9/ – DannyLane