Я создал двухосную комбинированную диаграмму с помощью API визуализации Google, которая отображает данные в виде столбчатых и линейных диаграмм.
на странице также есть набор фильтров для столбцов, который возвращает новый набор данных из базы данных в зависимости от выбранных фильтров столбцов.
Чтобы определить, какие значения являются столбцами и строками, я использовал параметр серии, который показан в 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, Unaled или Deteriorated всегда отображалось в виде столбца и использовало targetAxisIndex: 0, а значения со Average no. дней использования в начале или Среднее нет. дни использования при рассмотрении всегда строки и используют targetAxisIndex: 1.
Есть ли способ сделать это с помощью Google Visualization API?