javascript - 如何在 dc.js 的行图中创建目标线

标签 javascript charts analytics dc.js

我正在使用行图来显示推销员按商品列出的销售总额。

已经像谷歌的许多帖子一样尝试了复合图表,但没有成功,但没有一个示例使用行图。

enter image description here

我需要像图片一样,创建红线来代表每件商品的销售值(value)目标,但我不知道该怎么做,你们能帮我吗?谢谢!

实际上这是我绘制行图的代码

spenderRowChart = dc.rowChart("#chart-row-spenders");        

spenderRowChart
    .width(450).height(200)
    .dimension(itemDim)
    .group(totalItemGroup)
    .elasticX(true);

最佳答案

谢谢,由于花了很长时间才得到答案,我已经开发了一个解决方案,但是,真的谢谢你,它非常好,因为它几乎是相同的想法,所以我认为在这里分享代码也很好.

不同之处在于我的代码中,我使用其他逻辑来清除笔划,并使用其他图表的过滤器值使其动态化。

    .renderlet(function(chart) {
        dc.events.trigger(function() {
            filter1 = yearRingChart.filters();
            filter2 = spenderRowChart.filters();
        });
    })

    .on('pretransition', function(chart) {
        if (aux_path.length > 0){
            for (i = 0; i < aux_path.length; i++){
                aux_path[i].remove();
            }
        };

        aux_data = JSON.parse(JSON.stringify(data2));
        aux_data = aux_data.filter(venda => filter1.indexOf(venda.Nome) > -1);

        meta_subgrupo = [];
        aux_data.forEach(function(o) {
            var existing = meta_subgrupo.filter(function(i) { return i.SubGrupo === o.SubGrupo })[0];
            if (!existing)
                meta_subgrupo.push(o);
            else
                existing.Meta += o.Meta;
        });
        
        if (filter1.length > 0) {
            for (i = 0; (i < Object.keys(subGrupos).length); i++){                 
                var x_vert = meta_subgrupo[i].Meta;
                var extra_data = [
                    {x: chart.x()(x_vert), y: 0},
                    {x: chart.x()(x_vert), y: chart.effectiveHeight()}
                ];
                var line = d3.line()
                    .x(function(d) { return d.x; })
                    .y(function(d) { return d.y; })
                    .curve(d3.curveLinear);
                var chartBody = chart.select('g');
                var path = chartBody.selectAll('path.extra').data([extra_data]);
                path = path.enter()
                        .append('path')
                        .attr('class', 'oeExtra')
                        .attr('stroke', subGruposColors[i].Color)
                        .attr('id', 'ids')
                        .attr("stroke-width", 2)
                        .style("stroke-dasharray", ("10,3"))
                    .merge(path)
                path.attr('d', line);
                aux_path.push(path);
            }  
        }
})

这就是它的样子

enter image description here

关于javascript - 如何在 dc.js 的行图中创建目标线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54117001/

相关文章:

javascript - GAE( python ): set Access-Control-Allow-Origin

Python Repotrlab垂直条形图间距不一致

google-analytics - 事件跟踪中的自定义变量在 1 个插槽中具有多个值

javascript - 有没有一种方法可以在我的 jqplot 图中为我的刻度线着色

php - 如何在javascript中动态调用php函数

php - 如何从 PHP 端将 JavaScript 函数中的数组字符串作为参数传递?

excel - 在Excel VBA中更改饼图的切片颜色

java - 对从 REST API 中过滤 JSON 对象的疑问

ruby-on-rails - 使用 CouchDB 与 Hadoop 存储/分析 Web 应用程序日志数据的优点是什么?

asp.net - 警报消息框问题