工具提示在 Google 散点图中不起作用

Tooltip doesn't work in Google Scatter Chart

我正在尝试使用 Google 图表创建散点图,但我似乎无法添加列作为工具提示。我阅读了各种资料,指出数据定义应为:

        var data = new google.visualization.DataTable(); 
        data.addColumn('string', 'Year');        
        data.addColumn('number', 'Sales');
        // A column for custom tooltip content
        data.addColumn({type: 'string',role: 'tooltip',});

       data.addRows([
          ['Name1', 1000, 'Tooltip string'],
          ['Name2', 1170, 'Tooltip string'],
          ['Name3', 660, 'Tooltip string'],
        ]);

然而,它不起作用。

JSFiddle 演示问题:https://jsfiddle.net/shakedk/c37L0d1n/

material 图表不支持列角色,
以及其他几个选项。

见 --> Tracking Issue for Material Chart Feature Parity

对于自定义工具提示,您将需要使用 经典 图表。

material = google.charts.Scatter -- 包裹: 'scatter'

经典 = google.visualization.ScatterChart -- 套餐:'corechart'

请参阅以下工作片段...

google.charts.load('current', {
  'packages': ['corechart']
});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {

  var data = new google.visualization.DataTable();

  data.addColumn('string', 'Year');
  data.addColumn('number', 'Sales');
  // A column for custom tooltip content
  data.addColumn({
    type: 'string',
    role: 'tooltip',
  });

  data.addRows([
    ['Name1', 1000, 'Tooltip string'],
    ['Name2', 1170, 'Tooltip string'],
    ['Name3', 660, 'Tooltip string'],
  ]);

  var options = {
    width: 800,
    height: 500,
    chart: {
      title: 'Example',
    },
  };

  var chart = new google.visualization.ScatterChart(document.getElementById('scatterchart_material'));

  chart.draw(data, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="scatterchart_material"></div>

添加到WhiteHat的回答:

散点图 + 工具提示 + 仪表板过滤器列:

我使用 ScatterChart 时发现工具提示也不适用于“arrayToDataTable 方法”,如果还有一个字符串列用作 google.visualization.ControlWrapper 的过滤列。

“arrayToDataTable 方法”仅适用于 2 列数据和第 3 列工具提示。

如果第 3 列包含仪表板过滤器的输入,它也能正常工作。

但是有第 3 列和第 4 列,则无法使用“arrayToDataTable 方法”(对于散点图)。

如果我使用 DataTable.addRows 方法效果很好:

google.charts.setOnLoadCallback(chart_ecdf);
function chart_ecdf() {
      var data = new google.visualization.DataTable();
        data.addColumn('number','Population');
        data.addColumn('number','Area');
        data.addColumn({
            type: 'string',
            role: 'tooltip',
          })
        data.addColumn('string','Filter');
        data.addRows([
          [1324, 9640821, 'Annotated 1', 'A'],
          [1133, 3287263, 'Annotated 2', 'A'],
          [304, 9629091, 'Annotated 3', 'A'],
          [232, 1904569, 'Annotated 4', 'B'],
          [187, 8514877, 'Annotated 5', 'B']
        ]);
       
      var filter = new google.visualization.ControlWrapper({
        controlType: 'CategoryFilter',
        containerId: 'filter_ecdf',
        options: {
          filterColumnIndex: 3,
          ui: { caption: 'Kies een type', label: false, allowTyping: false, allowMultiple: false, allowNone: false, sortValues: false } },
        state: {'selectedValues': ['{{ .Params.ecdf_filter_state | safeJS }}']}
      });
      var chart = new google.visualization.ChartWrapper({
        chartType: 'ScatterChart',
        containerId: 'grafiek_ecdf',
        view: {columns: [0,1,2]},
        options: { 
        chartArea: {top:10, left:35, width:'82%', height:'90%'},
        vAxis: {minValue: 0, maxValue: 1, format: 'percent'},
        hAxis: {format: '#.##%' },
        legend: 'none',
        colors: ['#ffa852'] },
      });
      var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard_ecdf'));
      dashboard.bind(filter, chart);
      dashboard.draw(data);
    }