使用 Google 可视化 api,是否有一种简单的方法可以查看 DataView 是否为空?
https://developers.google.com/chart/interactive/docs/reference#DataView
我可以看到也许使用 dataView.getValue(0, 1) 等来检查空值,但它也包含列标题。
我猜这很棘手,因为数据视图可能有许多不同的格式,但是有没有一种很好的通用方法来检查空数据视图?我正在将数据视图用于饼图。
使用 Google 可视化 api,是否有一种简单的方法可以查看 DataView 是否为空?
https://developers.google.com/chart/interactive/docs/reference#DataView
我可以看到也许使用 dataView.getValue(0, 1) 等来检查空值,但它也包含列标题。
我猜这很棘手,因为数据视图可能有许多不同的格式,但是有没有一种很好的通用方法来检查空数据视图?我正在将数据视图用于饼图。
如果我没记错的话,这可以很容易地做到这一点
var predata = response.getDataTable();
var vals = new Array();
var rownum = predata.getNumberOfRows();
// Make sure our data isn't empty.
if (null==predata) // yoda was here
return;
返回数据源返回的数据表。如果查询执行失败并且没有返回数据,则返回 null。
从阅读文档来看,这似乎dataView.getNumberOfRows()
是您正在寻找的东西。但是,在调用它之前,您需要获取过滤后的空行,然后将它们隐藏起来。这是一个使用 Google Code Playground 的示例,我在其中检查一列是否为空,然后如果该行为空则隐藏该行。将该示例的 Google Code 的默认 JavaScript 替换为以下内容:
function drawVisualization() {
var dataTable = google.visualization.arrayToDataTable([
['Name', 'Age', 'Instrument', 'Color'],
[null, null, null, null],
['Paul', 52, 'Sitar', 'Red'],
['George', 16, 'Guitar', 'Green'],
['Ringo', 72, 'Drums', 'White']
]);
var table = new google.visualization.Table(document.getElementById('table'));
table.draw(dataTable, null);
var dataView = new google.visualization.DataView(dataTable);
// Get rows where the 2nd column contains null
var filteredRows = dataView.getFilteredRows([{column: 1, value:null}]);
console.log(filteredRows);
dataView.setColumns([0, 1]);
// Hide the filtered rows returned
dataView.hideRows(filteredRows);
// Check the number of rows that now exist
console.log(dataView.getNumberOfRows());
var chart = new google.visualization.ColumnChart(document.getElementById('chart'));
chart.draw(dataView, {width: 400, height: 200});
}
getDistinctValues可以帮助你。当应用于沿 Y 轴可视化的列时,它适用于折线图。
好像不太对...
也许我应该在客户端甚至看到数据之前在服务器端用 0 替换 null ......
我已经采取了:
if (dataView.getValue(0, 1) === null || dataView.getValue(1, 1) === null || dataView.getValue(2, 1)) === null)
我的数据视图结构在哪里:
列标题 1 | 数据 栏目 2 | 数据 专栏标题 3 | 数据