FYI - AmCharts не поддерживает вложенные данные JSON. Вы должны сначала преобразовать его.
Первое, что вам нужно сделать, это включить файл dataloader.min.js
. DataLoader - это внешний плагин, также как и экспорт, поэтому он требует отдельного включения.
<script src="https://www.amcharts.com/lib/3/plugins/dataloader/dataloader.min.js"></script>
Во-вторых, убедитесь, что у вас установлен CSS на вашем графике div. В твоей скрипке их нет.
#ridecounts {
width: 100%;
height: 500px;
}
Последнее, вам нужно использовать обратный вызов postProcess
в вашем dataLoader для создания совместимого формата JSON - единого уплощенного массива, сгруппированного по вашему categoryField
. Поскольку вы назвали свои свойства valueField
на основе имен ключей массива, сделайте их своими valueField
, когда вы переформатируете свои данные в массив объектов
dataLoader: {
url: "...",
// ...
postProcess: function(jsonResponse, dataLoaderConfig, chart) {
var categoryField = chart.categoryField;
var newData = [];
var groupedData = {};
Object.keys(jsonResponse).forEach(function(arrayKey) {
jsonResponse[arrayKey].forEach(function(dataItem) {
if (!groupedData[dataItem[categoryField]]) {
groupedData[dataItem[categoryField]] = {};
groupedData[dataItem[categoryField]][categoryField] =
dataItem[categoryField];
}
groupedData[dataItem[categoryField]][arrayKey] = dataItem.rideCount;
});
});
Object.keys(groupedData).forEach(function(groupedKey) {
newData.push(groupedData[groupedKey]);
});
return newData; //returns [{slot: 0, driver_data: 0, passenger_data: 0}, ...]
}
}
Codepen .
Я не уверен, что вы подразумеваете под преобразованием формата 12/24 часа, поскольку ваши данные не основаны на дате и времени.