#javascript #jquery #json #charts #amcharts
Вопрос:
Я хотел бы создать диаграмму с осью даты и времени в Amchart.
Минимальный период должен быть в часах, поэтому я добавил минимальный период:»hh». Данные находятся внутри HTML, между тегами. Я попробовал использовать приведенную ниже функцию, но я получаю пустую диаграмму (с белым полем bkackground).
В чем может быть проблема? Вот как я пытался:
Функция JS:
$(function() {
var amchart = AmCharts.makeChart("sales-analytics", {
"type": "serial",
"theme": "light",
"marginTop": 0,
"marginRight": 0,
"dataProvider": chartvalues,
"valueAxes": [{
"axisAlpha": 0,
"gridAlpha": 0,
"position": "left"
}],
"graphs": [{
"id": "g1",
"balloonText": "[[category]]<br><b><span style='font-size:14px;'>[[value]]</span></b>",
"bullet": "round",
"bulletSize": 8,
"lineColor": "#fe5d70",
"lineThickness": 2,
"negativeLineColor": "#fe9365",
"type": "smoothedLine",
"valueField": "value"
}],
"chartScrollbar": {
"graph": "g1",
"gridAlpha": 0,
"color": "#888888",
"scrollbarHeight": 55,
"backgroundAlpha": 0,
"selectedBackgroundAlpha": 0.1,
"selectedBackgroundColor": "#888888",
"graphFillAlpha": 0,
"autoGridCount": true,
"selectedGraphFillAlpha": 0,
"graphLineAlpha": 0.2,
"graphLineColor": "#c2c2c2",
"selectedGraphLineColor": "#888888",
"selectedGraphLineAlpha": 1
},
"chartCursor": {
"categoryBalloonDateFormat": "YYYY-MM-dd HH:mm:ss",
"cursorAlpha": 0,
"valueLineEnabled": true,
"valueLineBalloonEnabled": true,
"valueLineAlpha": 0.5,
"fullWidth": true
},
"dataDateFormat": "YYYY-MM-DD JJ:NN:SS",
"categoryField": "year",
"categoryAxis": {
"minPeriod": "hh",
"parseDates": true,
"gridAlpha": 0,
"minorGridAlpha": 0,
"minorGridEnabled": true
},
"export": {
"enabled": true
}
});
amchart.addListener("rendered", zoomChart);
if (amchart.zoomChart) {
amchart.zoomChart();
}
function zoomChart() {
amchart.zoomToIndexes(Math.round(amchart.dataProvider.length * 0.4), Math.round(amchart.dataProvider.length * 0.55));
}
});
Данные:
var chartvalues = [
{
"year": "2022-01-31 14:12:22",
"value": 71
},
{
"year": "2022-06-08 16:42:38",
"value": 50
},
{
"year": "2022-02-21 11:12:48",
"value": 43
},
{
"year": "2021-04-13 01:49:44",
"value": 82
}];
Ответ №1:
amCharts ожидает, что данные на основе даты и времени будут отсортированы в порядке возрастания (документы v3). Вам нужно исправить порядок данных, иначе они будут отображаться неправильно.
var chartvalues = [{
"year": "2021-04-13 01:49:44",
"value": 82
}, {
"year": "2022-01-31 14:12:22",
"value": 71
},
{
"year": "2022-02-21 11:12:48",
"value": 43
},
{
"year": "2022-06-08 16:42:38",
"value": 50
},
];
var amchart = AmCharts.makeChart("sales-analytics", {
"type": "serial",
"theme": "light",
"marginTop": 0,
"marginRight": 0,
"dataProvider": chartvalues,
"valueAxes": [{
"axisAlpha": 0,
"gridAlpha": 0,
"position": "left"
}],
"graphs": [{
"id": "g1",
"balloonText": "[[category]]<br><b><span style='font-size:14px;'>[[value]]</span></b>",
"bullet": "round",
"bulletSize": 8,
"lineColor": "#fe5d70",
"lineThickness": 2,
"negativeLineColor": "#fe9365",
"type": "smoothedLine",
"valueField": "value"
}],
"chartScrollbar": {
"graph": "g1",
"gridAlpha": 0,
"color": "#888888",
"scrollbarHeight": 55,
"backgroundAlpha": 0,
"selectedBackgroundAlpha": 0.1,
"selectedBackgroundColor": "#888888",
"graphFillAlpha": 0,
"autoGridCount": true,
"selectedGraphFillAlpha": 0,
"graphLineAlpha": 0.2,
"graphLineColor": "#c2c2c2",
"selectedGraphLineColor": "#888888",
"selectedGraphLineAlpha": 1
},
"chartCursor": {
"categoryBalloonDateFormat": "YYYY-MM-dd HH:mm:ss",
"cursorAlpha": 0,
"valueLineEnabled": true,
"valueLineBalloonEnabled": true,
"valueLineAlpha": 0.5,
"fullWidth": true
},
"dataDateFormat": "YYYY-MM-DD JJ:NN:SS",
"categoryField": "year",
"categoryAxis": {
"minPeriod": "hh",
"parseDates": true,
"gridAlpha": 0,
"minorGridAlpha": 0,
"minorGridEnabled": true
},
"export": {
"enabled": true
}
});
amchart.addListener("rendered", zoomChart);
if (amchart.zoomChart) {
amchart.zoomChart();
}
function zoomChart() {
amchart.zoomToIndexes(Math.round(amchart.dataProvider.length * 0.4), Math.round(amchart.dataProvider.length * 0.55));
}
<script type="text/javascript" src="https://www.amcharts.com/lib/3/amcharts.js"></script>
<script type="text/javascript" src="https://www.amcharts.com/lib/3/serial.js"></script>
<div id="sales-analytics" style="width: 100%; height: 300px;"></div>