Google 图表 - 绑定到控件时动态更改图表 x 轴

Google Charts - Change chart x-axis dynamically when bounded to a control

我的 DataTable 中有 5 列数据,其中第 0 列和第 4 列有不同的 x 轴值,我想根据这些值绘制,第 1-3 列有要绘制的 y 轴数据。

我有一个 ChartRangeFilter ControlWrapper 绑定到 Google 图表仪表板中的 AreaChart ChartWrapper。

我从将列设置为 [0,1,2,3] 的视图开始图表,这工作正常,将第 0 列的值绘制为 x 轴。

然后我有一个按钮,可以使用以下 javascript 函数在将列设置为 [4,1,2,3] 和返回 [0,1,2,3] 的视图之间切换:

function toggleView(){
    if(mode == "byTest"){
        view.setColumns([4,1,2,3]);
        chartWrapper.draw();
        dash.bind([control], [chartWrapper]);
        dash.draw(view);
        mode = "byTime";
    } else {
        view.setColumns([0,1,2,3]);
        chartWrapper.draw();
        dash.bind([control], [chartWrapper]);
        dash.draw(view);
        mode = "byTest";
    }
}

chartWrapper 更新以使用第 4 列中的新 x 轴正常,但 controlWrapper 失去功能并出现以下错误:

"One or more participants failed to draw()"

"Cannot read property 'x' of undefined"

"Undefined is not a function"

当按钮切换回使用原始列 [0,1,2,3] 时,一切再次正常。

An example of my code on jsfiddle

那么当您将图表绑定到控件时,如何动态更新 Google 图表的 x 轴?

仪表板 and/or ChartWrapper 和 ControlWrapper 似乎没有准备好尽可能多地处理不断变化的数据类型。似乎需要重建整个仪表板,我在这里做了:http://jsfiddle.net/dlaliberte/srrrn9sa/73/

使用这段代码:

control.clear();
control = new google.visualization.ControlWrapper({
    controlType: 'ChartRangeFilter',
    containerId: 'control_div',
    options: controlOptions
});

chartWrapper.clear();
chartWrapper = new google.visualization.ChartWrapper({
    chartType: 'AreaChart', //'LineChart',
    containerId: 'chart_div',
    options: options
});
dash.clear();
dash = new google.visualization.Dashboard(
    document.getElementById('dashboard_div'));
dash.bind([control], [chartWrapper]);