【发布时间】:2019-01-21 11:30:46
【问题描述】:
我使用 Google Visualization API 创建了一个双轴组合图表,将数据显示为柱形图和折线图。
该页面还具有一组用于列的过滤器,这些过滤器根据所选的列过滤器从数据库返回一个新数据集。
为了指定哪些值是条和线,我使用了 jsfiddle 中显示的系列选项和下面的代码:
google.charts.load('current',
{
callback: drawChart,
packages: ['corechart', 'controls', 'charteditor']
});
var chart;
function drawChart() {
var data = new google.visualization.arrayToDataTable([['Outcomes','Abstinent','Improved','Unchanged','Deteriorated','Average no. of days use at start','Average no. of days of use at review'],['2015/16',18036,11414,14430,1880,21.6,8.3],['2016/17',17642,11688,14010,1738,22.2,8.5],['2017/18',17282,10796,13542,1686,22.1,8.6]]);
var width = Math.min(document.documentElement.clientWidth, window.innerWidth || 0) + 'px';
var columnsTable = new google.visualization.DataTable();
columnsTable.addColumn('number', 'colIndex');
columnsTable.addColumn('string', 'colLabel');
var initState = { selectedValues: [] };
// put the columns into this data table (skip column 0)
for (var i = 1; i < data.getNumberOfColumns(); i++) {
columnsTable.addRow([i, data.getColumnLabel(i)]);
// you can comment out this next line if you want to have a default selection other than the whole list
initState.selectedValues.push(data.getColumnLabel(i));
}
// you can set individual columns to be the default columns (instead of populating via the loop above) like this:
// initState.selectedValues.push(data.getColumnLabel(4));
var options = {
title: 'Treatment outcomes',
hAxis: {
slantedText: true,
slantedTextAngle: 30,
title: 'Reporting Period'
},
vAxes: {
0: { logScale: false, title: 'No. of clients' },
1: { logScale: false, title: 'Average no. of days use', maxValue: 28 }
},
series: {
0: { type: "bars", targetAxisIndex: 0, color: '#FF9900' },
1: { type: "bars", targetAxisIndex: 0, color: '#FF6400' },
2: { type: "bars", targetAxisIndex: 0, color: '#FF0000' },
3: { type: "bars", targetAxisIndex: 0, color: '#9A0033' },
4: { type: "line", targetAxisIndex: 1 },
5: { type: "line", targetAxisIndex: 1 }
},
chartArea: {
top: 40,
left: 100,
width: "65%"
},
pointSize: 5,
legend: { position: 'top' },
width: width,
height: '300px'
}
var chart = new google.visualization.LineChart(document.getElementById("chart_div"));
chart.draw(data, options);
}
https://jsfiddle.net/uLwtbvn5/5/
我希望拥有它,以便在删除一个或多个值时,列名为 Abstinent、Improved、Unchanged 或 Deteriorated 的任何值始终显示为条形,并使用 targetAxisIndex: 0 和平均值为 no 的值。开始时使用天数或平均天数。审查时的使用天数始终为行并使用 targetAxisIndex:1。
有没有办法使用 Google Visualization API 做到这一点?
【问题讨论】:
标签: jquery loops charts google-visualization