javascript Google图表错误:数据列不能为字符串类型

oug3syen  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(134)

我正在使用这段代码生成图表。我必须将数据推入一个函数的数组中。然后我将它传递给绘图函数。但是当我这样做的时候,我得到了这个错误Data column(s) for axis #0 cannot be of type string。知道是什么问题吗?

function setData(records) {
$("#result").show();

var chartData = [];

    chartData.push(['A', 'B', 'C', 'D']);

    // A SIMPLE FOR EACH LOOP STARTS
    chartData.push([
        X,Y,P,Q
    ]);
    //FOR EACH ENDS
drawVisualization(chartData);
}

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

function drawVisualization(chartData) {

var data = google.visualization.arrayToDataTable([
    chartData
]);

var options = {
    title: 'Monthly Coffee Production by Country',
    vAxis: { title: 'Measure' },
    hAxis: { title: Row },
    seriesType: 'bars',
    series: { 5: { type: 'line' } }
};

var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
rkue9o1l

rkue9o1l1#

组合图的数据格式只允许第一列(x轴)中有字符串值
除非是用于特殊的role,如工具提示或注解
因此这一定意味着馈送到数组的数据包含字符串值,
在第一列之后
没有数据样本,很难说得准
但是,对于任何应该是数字的列,
使用parseFloatparseInt,具体取决于数据中的数字类型
如果所有列都应该是数字,
加载时尝试类似以下代码片段的内容...

var chartData = [];

chartData.push(['A', 'B', 'C', 'D']);

chartData.push([
    parseFloat(X),
    parseFloat(Y),
    parseFloat(P),
    parseFloat(Q)
]);
46qrfjad

46qrfjad2#

在我的例子中,这是一个竞态条件,在我收到数据之前,图表试图呈现。我使用的是Angular,所以我在图表周围放置了一个 *ngIf,仅当标志表明数据准备就绪时才显示。
另一个对我有效的解决方案是用单个值而不是空数组初始化我的数据对象(这里是chartData数组),然后当数据准备就绪时,再次将数据对象清除为空数组并添加数据。

相关问题