【发布时间】:2020-02-17 01:46:16
【问题描述】:
场景
我想查看我的 dc.js 水平行堆叠条形图(单行图表),但没有图表出现,除了带有名称的图例,确实出现了带有刻度线的轴。
截图
下面的数据集在代码sn -p
问题
如何使用 dc.js / d3.js 成功渲染确保图表渲染?
代码片段
$scope.avgCycleTime = function(){
var data = [
{"Project":"Expedition","Stage": "Created", "Days":12},
{"Project":"Expedition","Stage": "Active", "Days":14},
{"Project":"Expedition","Stage": "Closure", "Days":2}
];
var ndx = crossfilter(data);
data.forEach(function(x) {
x.Days = 0;
});
var ndx = crossfilter(data)
var xdim = ndx.dimension(function (d) {return d.Days;});
function root_function(dim,stack_names) {
return dim.group().reduce(
function(p, v) {
stack_names.forEach(stack_name => {
if(v[stack_name] !== undefined)
p[stack_name] = (p[v[stack_name]] || 0) + v[stack_name]
});
return p;},
function(p, v) {
stack_names.forEach(stack_name => {
if(v[stack_name] !== undefined)
p[stack_name] = (p[v[stack_name]] || 0) + v[stack_name]
});
return p;},
function() {
return {};
});}
var stages = ['Created', 'Active', 'Closure'];
var ygroup = root_function(xdim,stages)
function sel_stack(i) {
return function(d) {
return d.value[i];
};}
cycleChart = new dc.barChart("#risk-cycle-chart");
var chart = document.getElementById('risk-cycle-chart');
heightStatusChart = 200;
widthStatusChart = Math.floor(parseFloat(window.getComputedStyle(chart, null).width))
- 2*parseInt(window.getComputedStyle(chart, null).getPropertyValue('padding-top'));
cycleChart
.x(d3.scaleLinear().domain([0,7,14,21,28]))
.dimension(xdim)
.group(ygroup, data[0].Project, sel_stack(data[0].Project))
.xUnits(dc.units.ordinal)
.margins({left:75, top: 0, right: 0, bottom: 20})
.width(widthStatusChart)
.height(heightStatusChart)
.legend(dc.legend());
for(var i = 1; i<stages.length; ++i)
cycleChart.stack(ygroup, stages[i], sel_stack(stages[i]));
}
【问题讨论】:
-
您能否为您的问题创建一个工作实例?
-
示例几乎完成;它只需要
risk-cycle-chart的 html,而图表构造函数使用了错误的语法。
标签: javascript d3.js dc.js