【问题标题】:Google Charts, how can i set a calculated view in a ChartWrapper?Google Charts,如何在 ChartWrapper 中设置计算视图?
【发布时间】:2014-04-29 19:40:47
【问题描述】:

我使用谷歌图表中的 ChartWrapper。我的实际实现如下所示:

var dataTable=new google.visualization.DataTable(DATA);

var options = {
                 title: 'Name of the Chart',
                 vAxis: {title: "Cups"},
                 hAxis: {title: "Month"},

                 isStacked: false,

                 pointSize: 3
             }; 

var chartWrapperArgs = {
                     chartType: "LineChart",
                     dataTable: dataTable,
                     view: {"columns":[0,1,2]},
                     options: options,
                     containerId: "chart"]
                 }; 
var chartWrapper = new google.visualization.ChartWrapper(chartWrapperArgs);
chartWrapper.draw();

问题是,有时我必须将数据类型从“日期”更改为“字符串”,我在旧实现中这样做(没有 ChartWrapper),如下所示:

var dataView = new google.visualization.DataView(dataTable);

                dataView.setColumns([{
                    type: 'string',
                    label: dataView.getColumnLabel(0),
                    calc: function (dt, row) {
                        return dt.getFormattedValue(row, 0);
                    }
                }, 1]);

这行得通,现在我用我的 ChartWrapper 实现尝试了同样的方法,但没有成功:

我试过这两种方法:

1.) var dataTable=new google.visualization.DataTable(DATA);

var chartWrapperArgs = {
                    chartType: "LineChart",
                    dataTable: dataTable,
                    view: {"columns":[
                    {
                        type: 'string',
                        label: dataTable.getColumnLabel(0),
                        calc: function (dt, row) {
                            return dt.getFormattedValue(row, 0);
                        }
                    },
                    1
                ]},

                    options: options,
                    containerId: "chart"]
                };
var chartWrapper = new google.visualization.ChartWrapper(chartWrapperArgs);

我的第二个:

var dataTable=new google.visualization.DataTable(DATA);
var dataView = new google.visualization.DataView(dataTable);

                dataView.setColumns([{
                    type: 'string',
                    label: dataView.getColumnLabel(0),
                    calc: function (dt, row) {
                        return dt.getFormattedValue(row, 0);
                    }
                }, 1]);

                var ViewData= dataView.toJSON();


var chartWrapperArgs = {
                    chartType: "LineChart",
                    dataTable: dataTable,
                    view: ViewData,

                    options: options,
                    containerId: "chart"]
                };
var chartWrapper = new google.visualization.ChartWrapper(chartWrapperArgs);

但这也没有用..

我做错了什么?

我知道我可以将视图直接设置为 dataTable,例如“dataTable:view”,但我只想在“view:”选项或 chartWrapper.setView() 选项中执行此操作。或者这不可能吗?

【问题讨论】:

  • 你能用你的代码发布一个小提琴吗?

标签: javascript google-visualization


【解决方案1】:

您的第一个方法(设置view 参数)应该可以工作,但是您的代码在containerId: "chart"] 行的末尾有语法错误(] 不应该在那里):

var chartWrapperArgs = {
    chartType: "LineChart",
    dataTable: dataTable,
    view: {
        columns: [{
            type: 'string',
            label: dataTable.getColumnLabel(0),
            calc: function (dt, row) {
                return dt.getFormattedValue(row, 0);
            }
        }, 1]
    },
    options: options,
    containerId: "chart"
};
var chartWrapper = new google.visualization.ChartWrapper(chartWrapperArgs);

如果这不起作用,您能否发布一个完整的示例来说明问题?

【讨论】:

  • 它现在工作了,我使用了错误的语法,但谢谢你的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
相关资源
最近更新 更多