Есть ли функция underlayCallback в dc-js? - PullRequest
1 голос
/ 21 октября 2019

Я считаю, что опция underlayCallback чрезвычайно полезна в библиотеке dygraphs. Это позволяет пользователю «легко» рисовать вещи, которые не были частью первоначального замысла библиотеки. Я использовал его для добавления графических аннотаций, например, к диаграммам временных рядов.

Есть ли что-то эквивалентное в рамках dc.js? В идеале это то, что могло бы раскрыть (потенциально отфильтрованные) данные, используемые для построения диаграммы при ее обновлении.

1 Ответ

1 голос
/ 21 октября 2019

У вас есть несколько событий, которые запускаются в различных точках жизни графа:

https://dc -js.github.io / dc.js / docs / html / dc.baseMixin.html# on

То, что похоже на underlayCallback, это либо событие renderlet, либо событие перед переходом. из обратного вызова вы можете делать практически все, например, вращать метки топора, отслеживать новые события кликов, добавлять новые элементы SVG ...

Здесь есть пример рисования дополнительногострока:

.on('renderlet', function(chart) {
    var left_y = 10, right_y = 70; // use real statistics here!
    var extra_data = [{x: chart.x().range()[0], y: chart.y()(left_y)}, {x: chart.x().range()[1], y: chart.y()(right_y)}];
    var line = d3.line()
        .x(function(d) { return d.x; })
        .y(function(d) { return d.y; })
        .curve(d3.curveLinear);
    var chartBody = chart.select('g.chart-body');
    var path = chartBody.selectAll('path.extra').data([extra_data]);
    path = path
        .enter()
            .append('path')
            .attr('class', 'extra')
            .attr('stroke', 'red')
            .attr('id', 'extra-line')
        .merge(path);
    path.attr('d', line);
...