向 google 可视化条形图添加工具提示

adding tooltips to google visualization bar chart

我正在尝试向 Google 条形图添加自定义工具提示,但我不知道该怎么做。 Google 提供了一个很好的教程(在 https://developers.google.com/chart/interactive/docs/customizing_tooltip_content),但它只讨论了柱形图,而不是条形图。

我的代码如下所示:

<div id="top_x_div" style="width: 900px; height: 500px;"></div>
google.load("visualization", "1.1",{packages:["bar"]});
google.setOnLoadCallback(drawStuff0);

function drawStuff0() {
   var data = new google.visualization.arrayToDataTable([$data]);
   var options = {
       title: 'Categories',
       width: 900,
       legend: { position: 'none' },
       chart: { title: 'popularity by number of queries',
                subtitle: 'Number of times a category was queried' },
       bars: 'horizontal', // Required for Material Bar Charts.
       axes: {
                x: {
                    0: { side: 'top', label: 'Number of times a category was queried'} // Top x-axis.
                }
             },
       bar: { groupWidth: "90%" }
   };

   var chart = new google.charts.Bar(document.getElementById('top_x_div0'));

   // Convert the Classic options to Material options.
   chart.draw(data, google.charts.Bar.convertOptions(options));
};

$data 只是一个包含图表行的 PHP 变量。

有人可以解释一下如何向该图表添加自定义工具提示吗? 我在网上到处寻找解决方案,但一直找不到...

向具有角色 tooltip 的 DataTable 对象添加一个新列:

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

然后遍历 data 并为每一行添加您想要的任何工具提示(示例来自下面的一列条形图 fiddle):

for (var i=0; i<data.getNumberOfRows(); i++) {
   data.setValue(i, 2, 'Tooltip #'+i);
}

演示 -> http://jsfiddle.net/pc3zmb8w/

我无法更准确地指导您,因为我们不知道您的 PHP $data 是什么,也不知道您的图表是什么样的。但这基本上是您应该做的,在所有情况下,当您想要动态地将自定义工具提示添加到图表时...


更新 - 工具提示样式

至于“有没有办法让工具提示显示为矩形,而不是语音提示”,在选项中 - 设置 tooltip作为 isHtml :

var options = {
    tooltip: {isHtml: true} 
}

然后工具提示显示为矩形,就像正常的 HTML 元素工具提示一样。您还可以指定要在工具提示本身内部使用 HTML :

data.addColumn({type: 'string', role: 'tooltip', p: {'html': true}});

例如,以正常工具提示的颜色显示工具提示,但使用更大的字体大小和特定字体:

div.tooltip {
    background-color: #ffffca;
    color: #000023;
    padding: 10px;
    font-size: 20px;
    font-family : 'arial';
}

将工具提示设置为原始答案:

data.setValue(i, 2, '<div class="tooltip">Tooltip #'+i+'</div>');

演示 -> http://jsfiddle.net/yhhhcj2f/