【问题标题】:c3.js - Tooltips on xgrid linesc3.js - xgrid 线上的工具提示
【发布时间】:2017-08-28 07:55:44
【问题描述】:

在使用 c3.js 时悬停在 xgrid 线上时是否可以有工具提示?

var chart1 = c3.generate({
    bindto: '#chart1',
    padding: {
      right:30
    },
    data: {
          x: 'x',
          xFormat: '%Y-%m-%d %H:%M',
          columns:
          [
              ['x', '2013-01-01 00:00', '2013-01-01 01:00','2013-01-01 03:00','2013-01-01 04:00', '2013-01-01 05:00', '2013-01-01 06:00', '2013-01-01 07:00', '2013-01-01 08:00', '2013-01-01 09:00', '2013-01-01 10:00', '2013-01-01 11:00','2013-01-01 12:00','2013-01-01 13:00', '2013-01-01 14:00', '2013-01-01 15:00', '2013-01-01 16:00', '2013-01-01 17:00', '2013-01-01 18:00', '2013-01-01 19:00', '2013-01-01 20:00', '2013-01-01 21:00', '2013-01-01 22:00', '2013-01-01 23:00'],
              ['RX', 20, 10, 9, 20, 30, 20, 20, 20, 32, 20, 10, 9, 20, 30, 20, 20, 20, 32, 23, 12, 5, 14, 15],
          ],
          type: 'spline',
          colors: {
            RX:'#2d74d0',
          },
        },
        tooltip: {
          order: null,
        },
        point: {
          show: false
        },
        axis: {
            x: {
                type: 'timeseries',
                tick: {
                  multiline: false
                }
            },
            y: {
              tick: {
                format: function (y) { return y + 'GB'}
              }
            }
        }
    }
).xgrids.add([
  {value: '2013-01-01 01:00', text: '01:00, Network 1'},
  {value: '2013-01-01 02:28', text: '02:28, Network 2'}
]);

我在 jsfiddle 上发布了一个示例 https://jsfiddle.net/tekp7vvc/

【问题讨论】:

    标签: javascript d3.js tooltip c3.js


    【解决方案1】:

    您可以使用基于“标题”的基本工具提示,在您的 c3 设置中添加以下内容:

    onrendered: function () {
      var xg = d3.selectAll(".c3-xgrid-lines text");
      xg.each (function (d,i) {
            var title = d3.select(this).select("title");
          if (title.empty()) {
            title = xg.append("title");
          }
          title.text (function (d) {
            return "Gridline: "+d.value+", "+d.text;
          })
      })
    },
    

    https://jsfiddle.net/tekp7vvc/1/

    它设置为在将鼠标悬停在网格线文本上时起作用,否则如果网格线与数据点位于同一位置(凌晨 1 点数据点所在的位置),它将与在工具提示中显示数据的功能竞争

    它还设置为在 onrendered 而不是 oninit 中运行,因为在调用 oninit 时您的网格线尚未添加。

    【讨论】:

    • 虽然我在小提琴中看到了你的代码,但我没有看到任何差异..?
    • 将鼠标悬停在网格线上的文本上
    • ..嗯。我看到你在那里做了什么——但我有不同的想法。尽管我在示例中使用了这些值,但 xgrid 线不太可能恰好位于通常的网格线之上。现在我想好了一点,是否有可能将这些添加为额外的 tickValues 以便出现正常的工具提示?
    • 我会把它给你的,虽然它不是我想要的
    • 您不能将它们添加为刻度值,因为它们不会触发工具提示,除非它们具有相应的数据值(我尝试将数据设为“null”并执行“connectNull:真实的东西,但工具提示没有出现)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多