如何显示工具提示,其中包含 google 图表上具有相同 x 和 y 的多个数据点的信息

How to show a tooltip with info from several data points that have the same x and y on google charts

所以基本上我的数据看起来像

['x', 'y', 'name']

我在散点图上显示的。

我希望在悬停数据点时名称出现在工具提示中,所以我所做的是

data.addColumn('number', 'x');
data.addColumn('number', 'y');
data.addColumn({type: 'string', role: 'tooltip'});

然后

data.addRows([x, y, name])

我的问题是我的数据可能有多个条目具有相同的 x 和 y。当发生这种情况时,单个数据点将显示在图表上,并在行中显示姓氏的工具提示。我希望它是几个名字的串联。

有什么方法可以调整选项来实现这一点?还是我注定要建立自己的逻辑来处理它?干杯

尝试以下选项...

aggregationTarget: 'category'

aggregationTarget - 'category': Group selected data by x-value.


编辑

另一种选择是使用带有工具提示角色计算列的数据视图。

计算列有一个针对每一行运行的 calc 函数。
在这里,找到当前行的 x、y 值,
然后检查数据 table 是否具有匹配的 x、y 值的其他行,
并连接名称。

请参阅以下代码片段...

// create data table
var data = new google.visualization.DataTable();
data.addColumn('number', 'x');
data.addColumn('number', 'y');
data.addColumn({type: 'string', role: 'tooltip'});

// add rows
data.addRows([[x, y, name]]);

// create data view
var view = new google.visualization.DataView(data);

// set columns on data view
view.setColumns([0, 1, {
  calc: function (dt, row) {
    // get x, y for current row
    var x = dt.getValue(row, 0);
    var y = dt.getValue(row, 1);
    var name = '';

    // find rows with matching x, y
    for (var i = 0; i < dt.getNumberOfRows(); i++) {
      var testX = dt.getValue(i, 0);
      var testY = dt.getValue(i, 1);
      if ((x === testX) && (y === testY)) {
        // concat name
        if (name !== '') {
          name += ', ';
        }
        name += dt.getValue(i, 2);
      }
    }

    return name;
  },
  role: 'tooltip',
  type: 'string'
}]);

// draw chart with view
chart.draw(view, options);