GEt悬停数据点的X轴值

时间:2016-12-06 09:03:55

标签: c3.js

当用户在线图中悬停一个数据点时,我想获得该特定数据点的X轴值,以便我可以根据该值定位工具提示。有没有办法可以做到这一点?我们的想法是获取X中的值并减去工具提示容器宽度以将其定位在该点的左侧,以避免覆盖数据的工具提示出现问题。

到目前为止我的代码:

http://jsfiddle.net/owhxgaqm/292/

// c3 - custom tooltip
var chart = c3.generate({
    bindto: '#chart-test',
    data: {
        columns: [
            ['data1', 100, 200, 150, 300, 200],
            ['data2', 400, 500, 250, 700, 3000000000000], ]
    },
    tooltip: {
         position: function(data, width, height, thisElement) {
          var containerWidth, tooltipWidth, x, y;
          element = document.getElementById("chart-test");
          containerWidth = element.clientWidth;
          tooltipWidth = element.querySelector('.c3-tooltip').clientWidth * 2;
          x = parseInt(thisElement.getAttribute('x'));
          console.log("x is " + x)
          console.log("tooltipWidth is " + tooltipWidth)
          console.log("data is " + data)
          console.log("thisElement is " + thisElement)
          if (x + tooltipWidth > containerWidth) {
            x = containerWidth - tooltipWidth - 2;
          }
          y = thisElement.getAttribute('y');
          y = y - height;
          return {
            top: y,
            left: x
          };
        }
    }
});

1 个答案:

答案 0 :(得分:0)

可能对您有帮助!

tooltip: {
    show: true,
    grouped: true,
    contents: function (d, defaultTitleFormat, defaultValueFormat, color) {
            var $$ = this, config = $$.config, titleFormat = config.tooltip_format_title || defaultTitleFormat, nameFormat = config.tooltip_format_name || function (name) {
                            return name;
                    }, valueFormat = config.tooltip_format_value || defaultValueFormat, text, i, title, value, name, bgcolor;
            for (i = 0; i < d.length; i++) {
                    if (!(d[i] && (d[i].value || d[i].value === 0))) {
                            continue;
                    }
                    if (!text) {
                            title = titleFormat ? titleFormat(d[i].x) : d[i].x;
                            text = '<table class=\'' + $$.CLASS.tooltip + '\'>' + (title || title === 0 ? '<tr><th colspan=\'2\'>' + title + '</th></tr>' : '');
                    }
                    name = d[i].name;
                    value = d[i].value, d[i].ratio, d[i].id, d[i].index;
                    bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);
                    text += '<tr class=\'' + $$.CLASS.tooltipName + '-' + d[i].id + '\'>';
                    text += '<td class=\'name\'><span style=\'background-color:' + bgcolor + '\'></span>' + name + '</td>';
                    text += '<td class=\'value\'>' + value + '</td>';
                    text += '</tr>';
            }
            return text + '</table>';
    }
}

上面的代码用于操纵与原始内容完全相同的内容,并且可以通过编辑进行相应地修改。 特定于您的问题,可能是您可以进行填充以避免工具提示与数据点重叠。只需在上面的表格标记中指定样式即可。