dc.js(版本 3.0.7)- 无法绘制 rangeChart('focusChart' 未定义错误)
dc.js (version 3.0.7) - unable to plot rangeChart ('focusChart' of undefined error)
我在为折线图绘制范围图时遇到问题。
d3.tsv("demo.tsv").then(function(someData) {
drawMarkerSelectsome(someData);
});
function drawMarkerSelectsome(someData) {
parseDate = d3.timeParse("%m/%d/%Y");
someData.forEach(function(d) {
d.dd = parseDate(d.txndatetime);
d.month = d3.timeFormat("%m")
});
xf = crossfilter(someData);
all = xf.groupAll();
// Dimension by full date
dateDim = xf.dimension(function(d) { return d.dd; });
// Dimension by month
moveMonths = xf.dimension(function (d) {
return d.month;
});
numRecordsByDate = dateDim.group().reduceCount();;
numRecordsByMonth = moveMonths.group().reduceCount();
minDate = dateDim.bottom(1)[0].dd;
maxDate = dateDim.top(1)[0].dd;
timeChart = dc.lineChart("#time-chart",groupname)
.renderArea(true)
.width(940)
.height(200)
.transitionDuration(3000)
.margins({top: 10, right: 50, bottom: 20, left: 40})
.dimension(dateDim)
.mouseZoomable(true)
.rangeChart(volumeChart)
.elasticY(true)
.renderHorizontalGridLines(true)
.renderVerticalGridLines(true)
.brushOn(false)
.group(numRecordsByDate)
.x(d3.scaleTime().domain([minDate, maxDate]))
.round(d3.time.day.round)
.xUnits(d3.time.days)
.elasticY(true);
volumeChart.width(940)
.height(60)
.margins({top: 5, right: 50, bottom: 20, left: 40})
.dimension(dateDim)
.group(numRecordsByMonth)
.centerBar(true)
.gap(1)
.alwaysUseRounding(true)
.colors(['#D62728'])
.x(d3.scaleTime().domain([minDate, maxDate]))
.round(d3.time.month.round)
.xUnits(d3.time.months);
我试图保持维度 (dateDim) 不变,并按照此处的讨论更改了组 (),但我不断收到以下错误。
不确定代码有什么问题。我正在使用 dc.js v.3.0.7 和 d3.js v.5.7.0.
错误是说 volumeChart
未定义。你没有显示它的初始化位置,但我猜它不是。
在调用 .rangeChart(volumeChart)
之前,您必须将 lineChart 或 barChart 实例化为 volumeChart
设置好timeChart
后,您仍然可以设置它的参数。
我在为折线图绘制范围图时遇到问题。
d3.tsv("demo.tsv").then(function(someData) {
drawMarkerSelectsome(someData);
});
function drawMarkerSelectsome(someData) {
parseDate = d3.timeParse("%m/%d/%Y");
someData.forEach(function(d) {
d.dd = parseDate(d.txndatetime);
d.month = d3.timeFormat("%m")
});
xf = crossfilter(someData);
all = xf.groupAll();
// Dimension by full date
dateDim = xf.dimension(function(d) { return d.dd; });
// Dimension by month
moveMonths = xf.dimension(function (d) {
return d.month;
});
numRecordsByDate = dateDim.group().reduceCount();;
numRecordsByMonth = moveMonths.group().reduceCount();
minDate = dateDim.bottom(1)[0].dd;
maxDate = dateDim.top(1)[0].dd;
timeChart = dc.lineChart("#time-chart",groupname)
.renderArea(true)
.width(940)
.height(200)
.transitionDuration(3000)
.margins({top: 10, right: 50, bottom: 20, left: 40})
.dimension(dateDim)
.mouseZoomable(true)
.rangeChart(volumeChart)
.elasticY(true)
.renderHorizontalGridLines(true)
.renderVerticalGridLines(true)
.brushOn(false)
.group(numRecordsByDate)
.x(d3.scaleTime().domain([minDate, maxDate]))
.round(d3.time.day.round)
.xUnits(d3.time.days)
.elasticY(true);
volumeChart.width(940)
.height(60)
.margins({top: 5, right: 50, bottom: 20, left: 40})
.dimension(dateDim)
.group(numRecordsByMonth)
.centerBar(true)
.gap(1)
.alwaysUseRounding(true)
.colors(['#D62728'])
.x(d3.scaleTime().domain([minDate, maxDate]))
.round(d3.time.month.round)
.xUnits(d3.time.months);
我试图保持维度 (dateDim) 不变,并按照此处的讨论更改了组 (
不确定代码有什么问题。我正在使用 dc.js v.3.0.7 和 d3.js v.5.7.0.
错误是说 volumeChart
未定义。你没有显示它的初始化位置,但我猜它不是。
在调用 .rangeChart(volumeChart)
volumeChart
设置好timeChart
后,您仍然可以设置它的参数。