【发布时间】:2018-06-20 16:15:19
【问题描述】:
我目前正在制作一个运行良好的 dc.js 条形图,除了一件事:
X 轴表示多个日期,但在同一天,如果某个事件的关联值大于前一个事件的关联值,则它会重叠。
这是一个例子:
例如:在 2 月 22 日,可以看到橙色条被蓝色条隐藏。 那么,有没有一种方法可以自动解决这个问题?我一直在查看 Dc 文档,但我没有找到任何东西。
编辑:
我正在发布图表的代码,所以你可以看到我使用的比例和方法。
chart
.width(680)
.height(380)
.x(d3.scaleTime().domain([firstDate,lastDate]))
.xUnits(function(){return Object.keys(data.data).length;})
.brushOn(false)
.xAxisLabel('Aulas')
.yAxisLabel('presencas')
.dimension(DimensionHoras)
.barPadding(0.5)
.outerPadding(1)
.group(sumGroup)
.centerBar(true)
.legend(dc.legend().legendText(function(d, i) { return console.log(d);}))
.on('pretransition', function(chart) {
chart.selectAll("rect.bar").on("click", function (d) {
console.log(d);
var yy = data.data.filter(function(h){
return h.data_hora_ini == d.x
});
jQuery.each(yy, function(i, val){
graficoAssiduidade(val.data_hora_ini, val.cd_curso, val.uc_cod, "Data: " + val.dataSemFormato + ", " + val.hor_nome_turno);
});
chart.filter(null)
.filter(d.data.key)
.redrawGroup();
});
});
chart.on("renderlet", function(chart){
chart.selectAll("rect.bar").style("fill", function(d){
var filtro = data.data.filter(function(h){return h.data_hora_ini == d.x});
// console.log(d);
if(filtro[0].hor_nome_turno == "PL1")
return "#6BAED6";
else if(filtro[0].hor_nome_turno == "PL2")
return "orange";
else if(filtro[0].hor_nome_turno == "PL3")
return "yellow";
else if(filtro[0].hor_nome_turno == "TP1")
return "lightgreen";
});
});
【问题讨论】:
-
在 d3 scaleBand() 中尝试 padding() github.com/d3/d3scale/blob/master/README.md#band_padding
标签: javascript d3.js bar-chart dc.js crossfilter