You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Charts Dashboard中ChartWrapper的View属性无法正常工作

解决Google Charts Dashboard中使用View属性限制列的报错问题

我瞅了下你的代码,发现几个关键问题导致报错,咱们一步步来修正:

1. 过滤器列名不匹配

你的CategoryFilter里设置了filterColumnLabel: 'IAM',但你的数据集里根本没有名为IAM的列,第一列实际是Institution,这会直接导致控件找不到目标列而报错。

2. 缺失View属性配置

你提到要通过View属性限制数据列,但代码里的ColumnChart完全没配置这个属性,这也是报错的核心原因之一。

3. 动画配置不完整

animation选项里的duration只写了一半,没有赋值具体的数值(比如1000代表1秒)。

4. 缺少Dashboard绑定步骤

你创建了Dashboard、控件和图表,但没把控件和图表绑定起来,这样过滤器和图表无法联动。


修正后的完整代码

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

function drawDashboard() {
  var data = google.visualization.arrayToDataTable([
    ['Institution', 'Ineligible', 'Active', 'Closed With Outcome', 'Closed Outside Process', 'Closed Without Outcome', 'Eligibile'],
    ['CAC', 144, 35, 38, 4, 175, 115 ],
    ['SPF', 62, 2, 12, 1, 93, 4 ],
    ['CM', 69, 18, 10, 7, 64, 32 ],
    ['IP', 36, 4, 28, 24, 38, 62 ],
    ['EVM', 77, 7, 8, 2, 78, 19 ],
    ['RMC', 63, 5, 9, 1, 62, 18 ],
    ['MRI', 17, 5, 1, 5, 8, 3 ],
    ['IRM', 8, 0, 2, 1, 10, 5 ],
  ]);

  var dashboard = new google.visualization.Dashboard(
    document.getElementById('dashboard_div')
  );

  var iamFilter = new google.visualization.ControlWrapper({
    'controlType': 'CategoryFilter',
    'containerId': 'iam_filter',
    'options': {
      'filterColumnLabel': 'Institution', // 修正列名为数据集存在的列
      'ui': {
        'caption': "Choose mechanisms",
        'label': '',
        'labelStacking': 'vertical',
        'selectedValuesLayout': 'belowWrapping',
        'cssClass': 'ChartControl',
      }
    },
  });

  var columnChart = new google.visualization.ChartWrapper({
    'chartType': 'ColumnChart',
    'containerId': 'id_outcomes',
    'view': {
      // 这里配置要显示的列,用列标签或者索引都可以
      'columns': ['Institution', 'Closed With Outcome', 'Closed Outside Process', 'Closed Without Outcome']
    },
    'options': {
      colors: ['#1b5869', '#42bb9a', '#bec3c7', '#9953b5', '#4c96da'],
      animation: {
        "startup": true,
        duration: 1000 // 补充完整动画时长
      },
      // 可以再加一些常用配置让图表更美观
      hAxis: {title: 'Institution'},
      vAxis: {title: 'Count'},
      legend: {position: 'top'}
    },
  });

  // 绑定过滤器和图表,实现联动
  dashboard.bind(iamFilter, columnChart);

  // 绘制仪表盘
  dashboard.draw(data);
}

额外注意点

  • 使用View的columns时,确保列名和数据集里的完全一致(大小写敏感),也可以用列的索引值(比如[0, 3, 4, 5]对应第一列和第四到第六列)。
  • 如果要给多个图表配置不同的View,只需要给每个ChartWrapper单独设置对应的columns即可,互不影响。
  • 确保页面上存在对应的DOM容器(比如<div id="dashboard_div"></div>、<div id="iam_filter"></div>、<div id="id_outcomes"></div>),否则图表无法渲染。

内容的提问来源于stack exchange,提问作者Samer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:58:19