正如文档所述,将过滤器绑定到两个图表很容易:
// One-to-many binding where 'ageSelector' drives two charts.
dashboard.bind(agePicker, [ageVsSalaryScatterPlot, ageBarChart]);
这意味着如果您选择“欧洲”,它将更改两个图表的过滤器。从您的问题来看,您似乎对如何实际设置它有点不清楚(因为您的数据格式不正确)。
你将需要 5 样东西:
DataTable
包含所有图表的信息(所以如果你想要季度信息,它也需要DataTable
在
Dashboard
包含图表和控件的对象
ChartWrapper
饼图的对象。
ChartWrapper
堆积柱形图的对象
ControlWrapper
选择器的对象
数据表
目前,您的数据只有 3 列:
['Country', 'Speciality', 'Amount'],
['Europe', 'XYZ', 20441],
['Europe', 'ABC', 5355],
['Austria', 'XYZ', 477],
['Austria', 'ABC', 153],
['BeNeLux', 'XYZ', 1512],
['BeNeLux', 'ABC', 298],
['France', 'XYZ', 3080],
['France', 'ABC', 792],
由于您还需要宿舍,因此您还需要添加该信息。
['Country', 'Speciality', 'Amount', 'Q1', 'Q2', 'Q3', 'Q4'],
['Europe', 'XYZ', 20441, 1, 2, 3, 4],
['Europe', 'ABC', 5355, 1, 2, 3, 4],
['Austria', 'XYZ', 477, 1, 2, 3, 4],
['Austria', 'ABC', 153, 1, 2, 3, 4],
['BeNeLux', 'XYZ', 1512, 1, 2, 3, 4],
['BeNeLux', 'ABC', 298, 1, 2, 3, 4],
['France', 'XYZ', 3080, 1, 2, 3, 4],
['France', 'ABC', 792, 1, 2, 3, 4],
仪表板对象
仪表板对象指向<div>
包含<div>
图表和控件的其他元素的元素。所以在你的情况下,类似:
然后使用如下代码创建仪表板:
var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard'));
图表包装器
所以你有两个图表,你需要创建两个单独的包装器。包装器基本上提供了有关需要创建该图表的所有详细信息:
- 它在页面上的位置(
<div>
)
- 它将从哪里获取数据
- 它将使用什么类型的图表/选项
饼图仅使用第 0、1、2 列,因此您设置对象的“视图”属性以将数据限制在这些列中。
使用第 0、1、3、4、5、6 列对堆叠柱形图执行相同操作。
两个图表都需要从同一个图表中获取数据DataTable
,否则过滤一个图表不会影响另一个图表(过滤器将应用于 DataTable,因此如果您有两个图表,则一次只能更改一个)。
控制包装器
与 ChartWrapper 一样,您需要创建一个 ControlWrapper 对象,其中包含有关您使用的控件的所有详细信息。
设置好所有对象后,您可以使用此答案顶部的代码绘制仪表板并将控件绑定到两个图表。
参考
如果您仍然感到困惑,请使用Google Playground for Dashboards 来了解它的工作原理。