DevExtreme v24.1 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

JavaScript/jQuery Charts - Points Aggregation

This demo illustrates the Chart's data aggregation feature using the line, range area, and bar series. The line series shows temperature changes using average, minimum, or maximum temperature values in the selected time interval. The range area series shows the temperature range for the same time interval and uses a custom aggregate function. The bar series illustrates precipitation and is not aggregated.

Backend API
$(() => { const chart = $('#chart').dxChart({ dataSource, title: 'Weather in Las Vegas, NV (2017)', commonSeriesSettings: { argumentField: 'date', }, argumentAxis: { argumentType: 'datetime', aggregationInterval: 'week', valueMarginsEnabled: false, }, valueAxis: [{ name: 'temperature', title: { text: 'Temperature, °C', font: { color: '#e91e63', }, }, label: { font: { color: '#e91e63', }, }, }, { name: 'precipitation', position: 'right', title: { text: 'Precipitation, mm', font: { color: '#03a9f4', }, }, label: { font: { color: '#03a9f4', }, }, }, ], legend: { visible: false, }, series: [{ axis: 'precipitation', color: '#03a9f4', type: 'bar', valueField: 'precip', name: 'Precipitation', }, { axis: 'temperature', color: '#ffc0bb', type: 'rangeArea', rangeValue1Field: 'minTemp', rangeValue2Field: 'maxTemp', aggregation: { enabled: true, method: 'custom', calculate(aggregationInfo) { if (!aggregationInfo.data.length) { return null; } const temp = aggregationInfo.data.map((item) => item.temp); const maxTemp = Math.max.apply(null, temp); const minTemp = Math.min.apply(null, temp); return { date: new Date((aggregationInfo.intervalStart.valueOf() + aggregationInfo.intervalEnd.valueOf()) / 2), maxTemp, minTemp, }; }, }, name: 'Temperature range', }, { axis: 'temperature', color: '#e91e63', valueField: 'temp', point: { size: 7, }, aggregation: { enabled: true, }, name: 'Average temperature', }], tooltip: { enabled: true, customizeTooltip(arg) { return customTooltipHandlers[arg.seriesName](arg, arg.point.aggregationInfo); }, }, }).dxChart('instance'); $('#useAggregationToggle').dxCheckBox({ text: 'Aggregation enabled', value: true, onValueChanged(data) { chart.option('series[1].aggregation.enabled', data.value); chart.option('series[2].aggregation.enabled', data.value); }, }); $('#aggregateIntervalSelector').dxSelectBox({ items: intervals, value: 'week', valueExpr: 'interval', inputAttr: { 'aria-label': 'Interval' }, displayExpr: 'displayName', onValueChanged(data) { chart.option('argumentAxis.aggregationInterval', data.value); }, }); $('#aggregateFunctionSelector').dxSelectBox({ items: functions, value: 'avg', valueExpr: 'func', inputAttr: { 'aria-label': 'Function' }, displayExpr: 'displayName', onValueChanged(data) { chart.option('series[2].aggregation.method', data.value); }, }); const customTooltipHandlers = { 'Average temperature': function (arg, aggregationInfo) { const start = aggregationInfo && aggregationInfo.intervalStart; const end = aggregationInfo && aggregationInfo.intervalEnd; return { text: `${!aggregationInfo ? `Date: ${arg.argument.toDateString()}` : `Interval: ${start.toDateString() } - ${end.toDateString()}` }<br/>Temperature: ${arg.value.toFixed(2)} °C`, }; }, 'Temperature range': function (arg, aggregationInfo) { const start = aggregationInfo.intervalStart; const end = aggregationInfo.intervalEnd; return { text: `Interval: ${start.toDateString() } - ${end.toDateString() }<br/>Temperature range: ${arg.rangeValue1 } - ${arg.rangeValue2} °C`, }; }, Precipitation(arg) { return { text: `Date: ${arg.argument.toDateString() }<br/>Precipitation: ${arg.valueText} mm`, }; }, }; });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/24.1.6/css/dx.light.css" /> <script src="js/dx.all.js"></script> <script src="data.js"></script> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="index.js"></script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="chart-demo"> <div id="chart"></div> <div class="options"> <div class="caption">Options</div> <div class="option"> <div id="useAggregationToggle"></div> </div> <div class="option"> <span>Interval:</span> <div id="aggregateIntervalSelector"></div> </div> <div class="option"> <span>Method:</span> <div id="aggregateFunctionSelector"></div> </div> </div> </div> </div> </body> </html>
#chart-demo { height: 700px; width: 100%; } #chart { height: 500px; margin: 0 0 15px; } .options { padding: 20px; margin-top: 20px; background-color: rgba(191, 191, 191, 0.15); } .caption { font-size: 18px; font-weight: 500; } .option { margin-top: 10px; } .option > span { width: 50px; display: inline-block; margin-right: 10px; } .option > .dx-selectbox { display: inline-block; vertical-align: middle; }
const intervals = [{ displayName: 'One week', interval: 'week', }, { displayName: 'Two weeks', interval: { weeks: 2 }, }, { displayName: 'Month', interval: 'month', }]; const functions = [{ displayName: 'Average', func: 'avg', }, { displayName: 'Minimum', func: 'min', }, { displayName: 'Maximum', func: 'max', }]; const dataSource = [{ date: '2017-01-01', temp: 9.5, precip: 0.1, }, { date: '2017-01-02', temp: 8, precip: 0.4, }, { date: '2017-01-03', temp: 7.5, precip: 0.2, }, { date: '2017-01-04', temp: 8.5, precip: 0.1, }, { date: '2017-01-05', temp: 10, precip: 0.3, }, { date: '2017-01-06', temp: 3, precip: 0, }, { date: '2017-01-07', temp: 5, precip: 0.3, }, { date: '2017-01-08', temp: 9.5, precip: 0, }, { date: '2017-01-09', temp: 11, precip: 0.5, }, { date: '2017-01-10', temp: 8, precip: 0, }, { date: '2017-01-11', temp: 11.5, precip: 0.3, }, { date: '2017-01-12', temp: 9.5, precip: 2.1, }, { date: '2017-01-13', temp: 11.5, precip: 3.5, }, { date: '2017-01-14', temp: 11, precip: 0.1, }, { date: '2017-01-15', temp: 10.5, precip: 0, }, { date: '2017-01-16', temp: 6.5, precip: 0, }, { date: '2017-01-17', temp: 7.5, precip: 0, }, { date: '2017-01-18', temp: 8, precip: 0.1, }, { date: '2017-01-19', temp: 8.5, precip: 1.3, }, { date: '2017-01-20', temp: 5.5, precip: 5.3, }, { date: '2017-01-21', temp: 9, precip: 0.1, }, { date: '2017-01-22', temp: 6, precip: 16.6, }, { date: '2017-01-23', temp: 8.5, precip: 5.5, }, { date: '2017-01-24', temp: 6.5, precip: 1.3, }, { date: '2017-01-25', temp: 4.5, precip: 0, }, { date: '2017-01-26', temp: 5.5, precip: 0, }, { date: '2017-01-27', temp: 3, precip: 0, }, { date: '2017-01-28', temp: 6.5, precip: 0, }, { date: '2017-01-29', temp: 8, precip: 0, }, { date: '2017-01-30', temp: 10.5, precip: 0, }, { date: '2017-01-31', temp: 13, precip: 0, }, { date: '2017-02-01', temp: 10.5, precip: 0, }, { date: '2017-02-02', temp: 12, precip: 0, }, { date: '2017-02-03', temp: 13, precip: 0.2, }, { date: '2017-02-04', temp: 10, precip: 0, }, { date: '2017-02-05', temp: 11.5, precip: 0, }, { date: '2017-02-06', temp: 11.5, precip: 0.1, }, { date: '2017-02-07', temp: 12.5, precip: 0.5, }, { date: '2017-02-08', temp: 13, precip: 0, }, { date: '2017-02-09', temp: 15.5, precip: 0, }, { date: '2017-02-10', temp: 16.5, precip: 0.1, }, { date: '2017-02-11', temp: 14.5, precip: 0.8, }, { date: '2017-02-12', temp: 13.5, precip: 0.1, }, { date: '2017-02-13', temp: 13.5, precip: 0, }, { date: '2017-02-14', temp: 12, precip: 0, }, { date: '2017-02-15', temp: 13.5, precip: 0, }, { date: '2017-02-16', temp: 14.5, precip: 0, }, { date: '2017-02-17', temp: 12.5, precip: 4.5, }, { date: '2017-02-18', temp: 10, precip: 14.4, }, { date: '2017-02-19', temp: 13.5, precip: 0.5, }, { date: '2017-02-20', temp: 14, precip: 0.6, }, { date: '2017-02-21', temp: 15, precip: 0, }, { date: '2017-02-22', temp: 11, precip: 0, }, { date: '2017-02-23', temp: 7.5, precip: 0, }, { date: '2017-02-24', temp: 6, precip: 0, }, { date: '2017-02-25', temp: 7, precip: 0, }, { date: '2017-02-26', temp: 8, precip: 0, }, { date: '2017-02-27', temp: 8.5, precip: 0.1, }, { date: '2017-02-28', temp: 10, precip: 0, }, { date: '2017-03-01', temp: 9, precip: 0, }, { date: '2017-03-02', temp: 11, precip: 0, }, { date: '2017-03-03', temp: 15, precip: 0, }, { date: '2017-03-04', temp: 14.5, precip: 0, }, { date: '2017-03-05', temp: 12.5, precip: 0, }, { date: '2017-03-06', temp: 7.5, precip: 0, }, { date: '2017-03-07', temp: 11, precip: 0, }, { date: '2017-03-08', temp: 16, precip: 0, }, { date: '2017-03-09', temp: 19.5, precip: 0, }, { date: '2017-03-10', temp: 20, precip: 0, }, { date: '2017-03-11', temp: 20.5, precip: 0, }, { date: '2017-03-12', temp: 21.5, precip: 0, }, { date: '2017-03-13', temp: 21.5, precip: 0, }, { date: '2017-03-14', temp: 23.5, precip: 0, }, { date: '2017-03-15', temp: 23, precip: 0, }, { date: '2017-03-16', temp: 23, precip: 0, }, { date: '2017-03-17', temp: 22.5, precip: 0, }, { date: '2017-03-18', temp: 23.5, precip: 0, }, { date: '2017-03-19', temp: 24, precip: 0, }, { date: '2017-03-20', temp: 23.5, precip: 0, }, { date: '2017-03-21', temp: 22, precip: 0, }, { date: '2017-03-22', temp: 18.5, precip: 4, }, { date: '2017-03-23', temp: 15, precip: 2.4, }, { date: '2017-03-24', temp: 20.5, precip: 0, }, { date: '2017-03-25', temp: 19, precip: 0, }, { date: '2017-03-26', temp: 18.5, precip: 0, }, { date: '2017-03-27', temp: 18, precip: 0, }, { date: '2017-03-28', temp: 17, precip: 0, }, { date: '2017-03-29', temp: 21, precip: 0, }, { date: '2017-03-30', temp: 19.5, precip: 0, }, { date: '2017-03-31', temp: 16.5, precip: 0.2, }, { date: '2017-04-01', temp: 19, precip: 0, }, { date: '2017-04-02', temp: 20, precip: 0, }, { date: '2017-04-03', temp: 18, precip: 0, }, { date: '2017-04-04', temp: 16.5, precip: 0, }, { date: '2017-04-05', temp: 17, precip: 0, }, { date: '2017-04-06', temp: 21.5, precip: 0, }, { date: '2017-04-07', temp: 22, precip: 0, }, { date: '2017-04-08', temp: 19, precip: 0.2, }, { date: '2017-04-09', temp: 14.5, precip: 0, }, { date: '2017-04-10', temp: 17, precip: 0, }, { date: '2017-04-11', temp: 19.5, precip: 0, }, { date: '2017-04-12', temp: 21.5, precip: 0, }, { date: '2017-04-13', temp: 21.5, precip: 0, }, { date: '2017-04-14', temp: 19, precip: 0, }, { date: '2017-04-15', temp: 21, precip: 0, }, { date: '2017-04-16', temp: 22.5, precip: 0, }, { date: '2017-04-17', temp: 21.5, precip: 0, }, { date: '2017-04-18', temp: 21.5, precip: 0, }, { date: '2017-04-19', temp: 21.5, precip: 0, }, { date: '2017-04-20', temp: 22, precip: 0, }, { date: '2017-04-21', temp: 20, precip: 0, }, { date: '2017-04-22', temp: 23, precip: 0, }, { date: '2017-04-23', temp: 26, precip: 0, }, { date: '2017-04-24', temp: 25, precip: 0, }, { date: '2017-04-25', temp: 22, precip: 0, }, { date: '2017-04-26', temp: 23.5, precip: 0, }, { date: '2017-04-27', temp: 23, precip: 0, }, { date: '2017-04-28', temp: 19, precip: 0, }, { date: '2017-04-29', temp: 19.5, precip: 0, }, { date: '2017-04-30', temp: 21.5, precip: 0, }, { date: '2017-05-01', temp: 26, precip: 0, }, { date: '2017-05-02', temp: 26, precip: 0, }, { date: '2017-05-03', temp: 25.5, precip: 0, }, { date: '2017-05-04', temp: 28, precip: 0, }, { date: '2017-05-05', temp: 28.5, precip: 0, }, { date: '2017-05-06', temp: 27, precip: 0.4, }, { date: '2017-05-07', temp: 17, precip: 0.1, }, { date: '2017-05-08', temp: 17, precip: 0, }, { date: '2017-05-09', temp: 20, precip: 1.7, }, { date: '2017-05-10', temp: 19.5, precip: 0.3, }, { date: '2017-05-11', temp: 23, precip: 0, }, { date: '2017-05-12', temp: 26, precip: 0, }, { date: '2017-05-13', temp: 22.5, precip: 0, }, { date: '2017-05-14', temp: 23, precip: 0, }, { date: '2017-05-15', temp: 19.5, precip: 0, }, { date: '2017-05-16', temp: 20, precip: 0, }, { date: '2017-05-17', temp: 18.5, precip: 0, }, { date: '2017-05-18', temp: 19.5, precip: 0, }, { date: '2017-05-19', temp: 21.5, precip: 0, }, { date: '2017-05-20', temp: 24, precip: 0, }, { date: '2017-05-21', temp: 27.5, precip: 0, }, { date: '2017-05-22', temp: 29, precip: 0, }, { date: '2017-05-23', temp: 30.5, precip: 0, }, { date: '2017-05-24', temp: 31, precip: 0, }, { date: '2017-05-25', temp: 29.5, precip: 0, }, { date: '2017-05-26', temp: 27, precip: 0, }, { date: '2017-05-27', temp: 26, precip: 0, }, { date: '2017-05-28', temp: 29, precip: 0, }, { date: '2017-05-29', temp: 30.5, precip: 0, }, { date: '2017-05-30', temp: 31.5, precip: 0, }, { date: '2017-05-31', temp: 29.5, precip: 0, }, { date: '2017-06-01', temp: 28, precip: 0, }, { date: '2017-06-02', temp: 30, precip: 0, }, { date: '2017-06-03', temp: 32.5, precip: 0, }, { date: '2017-06-04', temp: 32, precip: 0, }, { date: '2017-06-05', temp: 31.5, precip: 0, }, { date: '2017-06-06', temp: 33, precip: 0, }, { date: '2017-06-07', temp: 32.5, precip: 0, }, { date: '2017-06-08', temp: 31.5, precip: 0, }, { date: '2017-06-09', temp: 31.5, precip: 0, }, { date: '2017-06-10', temp: 29, precip: 0, }, { date: '2017-06-11', temp: 26, precip: 0, }, { date: '2017-06-12', temp: 21, precip: 0, }, { date: '2017-06-13', temp: 25, precip: 0, }, { date: '2017-06-14', temp: 30.5, precip: 0, }, { date: '2017-06-15', temp: 32, precip: 0, }, { date: '2017-06-16', temp: 34.5, precip: 0, }, { date: '2017-06-17', temp: 36, precip: 0, }, { date: '2017-06-18', temp: 36, precip: 0, }, { date: '2017-06-19', temp: 37.5, precip: 0, }, { date: '2017-06-20', temp: 39, precip: 0, }, { date: '2017-06-21', temp: 38, precip: 0, }, { date: '2017-06-22', temp: 37.5, precip: 0, }, { date: '2017-06-23', temp: 37, precip: 0, }, { date: '2017-06-24', temp: 37.5, precip: 0, }, { date: '2017-06-25', temp: 37, precip: 0, }, { date: '2017-06-26', temp: 36.5, precip: 0, }, { date: '2017-06-27', temp: 34, precip: 0, }, { date: '2017-06-28', temp: 34, precip: 0, }, { date: '2017-06-29', temp: 37.5, precip: 0, }, { date: '2017-06-30', temp: 35, precip: 0, }, { date: '2017-07-01', temp: 37.5, precip: 0, }, { date: '2017-07-02', temp: 35.5, precip: 0, }, { date: '2017-07-03', temp: 36.5, precip: 0, }, { date: '2017-07-04', temp: 37, precip: 0, }, { date: '2017-07-05', temp: 39, precip: 0, }, { date: '2017-07-06', temp: 39.5, precip: 0, }, { date: '2017-07-07', temp: 40, precip: 0, }, { date: '2017-07-08', temp: 39, precip: 0, }, { date: '2017-07-09', temp: 36.5, precip: 0, }, { date: '2017-07-10', temp: 37, precip: 0, }, { date: '2017-07-11', temp: 36.5, precip: 0.1, }, { date: '2017-07-12', temp: 36.5, precip: 0, }, { date: '2017-07-13', temp: 38, precip: 0, }, { date: '2017-07-14', temp: 39.5, precip: 0, }, { date: '2017-07-15', temp: 40, precip: 0, }, { date: '2017-07-16', temp: 38.5, precip: 0, }, { date: '2017-07-17', temp: 37, precip: 0, }, { date: '2017-07-18', temp: 37, precip: 0, }, { date: '2017-07-19', temp: 34, precip: 0.4, }, { date: '2017-07-20', temp: 34.5, precip: 0, }, { date: '2017-07-21', temp: 36.5, precip: 0, }, { date: '2017-07-22', temp: 36.5, precip: 0, }, { date: '2017-07-23', temp: 38, precip: 0, }, { date: '2017-07-24', temp: 34, precip: 0.1, }, { date: '2017-07-25', temp: 34, precip: 0, }, { date: '2017-07-26', temp: 33.5, precip: 0.2, }, { date: '2017-07-27', temp: 36, precip: 0, }, { date: '2017-07-28', temp: 38, precip: 0, }, { date: '2017-07-29', temp: 36.5, precip: 0, }, { date: '2017-07-30', temp: 37.5, precip: 0.1, }, { date: '2017-07-31', temp: 37, precip: 0, }, { date: '2017-08-01', temp: 37, precip: 0, }, { date: '2017-08-02', temp: 35.5, precip: 0.1, }, { date: '2017-08-03', temp: 33.5, precip: 0.9, }, { date: '2017-08-04', temp: 32, precip: 0.1, }, { date: '2017-08-05', temp: 33.5, precip: 0.1, }, { date: '2017-08-06', temp: 34, precip: 0, }, { date: '2017-08-07', temp: 33.5, precip: 0, }, { date: '2017-08-08', temp: 35.5, precip: 0, }, { date: '2017-08-09', temp: 36, precip: 0, }, { date: '2017-08-10', temp: 35.5, precip: 0, }, { date: '2017-08-11', temp: 35, precip: 0, }, { date: '2017-08-12', temp: 35.5, precip: 0.1, }, { date: '2017-08-13', temp: 34, precip: 0, }, { date: '2017-08-14', temp: 32.5, precip: 0, }, { date: '2017-08-15', temp: 30, precip: 0, }, { date: '2017-08-16', temp: 31, precip: 0, }, { date: '2017-08-17', temp: 33.5, precip: 0, }, { date: '2017-08-18', temp: 34.5, precip: 0, }, { date: '2017-08-19', temp: 34, precip: 0, }, { date: '2017-08-20', temp: 33, precip: 0, }, { date: '2017-08-21', temp: 32, precip: 0, }, { date: '2017-08-22', temp: 32.5, precip: 0, }, { date: '2017-08-23', temp: 33, precip: 0, }, { date: '2017-08-24', temp: 33, precip: 0, }, { date: '2017-08-25', temp: 33.5, precip: 0, }, { date: '2017-08-26', temp: 36, precip: 0, }, { date: '2017-08-27', temp: 37, precip: 0, }, { date: '2017-08-28', temp: 37, precip: 0, }, { date: '2017-08-29', temp: 36.5, precip: 0, }, { date: '2017-08-30', temp: 36, precip: 0.3, }, { date: '2017-08-31', temp: 33.5, precip: 0.3, }, { date: '2017-09-01', temp: 33.5, precip: 0, }, { date: '2017-09-02', temp: 34.5, precip: 0, }, { date: '2017-09-03', temp: 34, precip: 0.1, }, { date: '2017-09-04', temp: 29.5, precip: 0, }, { date: '2017-09-05', temp: 33, precip: 0, }, { date: '2017-09-06', temp: 32, precip: 0, }, { date: '2017-09-07', temp: 32, precip: 0, }, { date: '2017-09-08', temp: 28, precip: 1.7, }, { date: '2017-09-09', temp: 23, precip: 7.6, }, { date: '2017-09-10', temp: 29, precip: 0, }, { date: '2017-09-11', temp: 32, precip: 0, }, { date: '2017-09-12', temp: 31, precip: 0, }, { date: '2017-09-13', temp: 30.5, precip: 0, }, { date: '2017-09-14', temp: 26, precip: 0, }, { date: '2017-09-15', temp: 23.5, precip: 0, }, { date: '2017-09-16', temp: 24.5, precip: 0, }, { date: '2017-09-17', temp: 25, precip: 0, }, { date: '2017-09-18', temp: 26.5, precip: 0, }, { date: '2017-09-19', temp: 24.5, precip: 0, }, { date: '2017-09-20', temp: 24.5, precip: 0, }, { date: '2017-09-21', temp: 20, precip: 0, }, { date: '2017-09-22', temp: 17, precip: 0, }, { date: '2017-09-23', temp: 15.5, precip: 0, }, { date: '2017-09-24', temp: 17.5, precip: 0, }, { date: '2017-09-25', temp: 18, precip: 0, }, { date: '2017-09-26', temp: 18.5, precip: 0, }, { date: '2017-09-27', temp: 21.5, precip: 0, }, { date: '2017-09-28', temp: 22, precip: 0, }, { date: '2017-09-29', temp: 24, precip: 0, }, { date: '2017-09-30', temp: 25, precip: 0, }, { date: '2017-10-01', temp: 23, precip: 0, }, { date: '2017-10-02', temp: 18, precip: 0, }, { date: '2017-10-03', temp: 18.5, precip: 0, }, { date: '2017-10-04', temp: 18.5, precip: 0, }, { date: '2017-10-05', temp: 21.5, precip: 0, }, { date: '2017-10-06', temp: 19.5, precip: 0, }, { date: '2017-10-07', temp: 23, precip: 0, }, { date: '2017-10-08', temp: 24, precip: 0, }, { date: '2017-10-09', temp: 14.5, precip: 0, }, { date: '2017-10-10', temp: 18, precip: 0, }, { date: '2017-10-11', temp: 20, precip: 0, }, { date: '2017-10-12', temp: 20, precip: 0, }, { date: '2017-10-13', temp: 21, precip: 0, }, { date: '2017-10-14', temp: 17, precip: 0, }, { date: '2017-10-15', temp: 18, precip: 0, }, { date: '2017-10-16', temp: 20.5, precip: 0, }, { date: '2017-10-17', temp: 21.5, precip: 0, }, { date: '2017-10-18', temp: 21.5, precip: 0, }, { date: '2017-10-19', temp: 22.5, precip: 0, }, { date: '2017-10-20', temp: 18, precip: 0, }, { date: '2017-10-21', temp: 15, precip: 0, }, { date: '2017-10-22', temp: 19.5, precip: 0, }, { date: '2017-10-23', temp: 22, precip: 0, }, { date: '2017-10-24', temp: 20.5, precip: 0, }, { date: '2017-10-25', temp: 21, precip: 0, }, { date: '2017-10-26', temp: 22, precip: 0, }, { date: '2017-10-27', temp: 20, precip: 0, }, { date: '2017-10-28', temp: 19.5, precip: 0, }, { date: '2017-10-29', temp: 21, precip: 0, }, { date: '2017-10-30', temp: 19.5, precip: 0, }, { date: '2017-10-31', temp: 17.5, precip: 0, }, { date: '2017-11-01', temp: 18, precip: 0, }, { date: '2017-11-02', temp: 15, precip: 0, }, { date: '2017-11-03', temp: 14.5, precip: 0, }, { date: '2017-11-04', temp: 16.5, precip: 0, }, { date: '2017-11-05', temp: 12.5, precip: 0, }, { date: '2017-11-06', temp: 12, precip: 0, }, { date: '2017-11-07', temp: 14, precip: 0, }, { date: '2017-11-08', temp: 14.5, precip: 0, }, { date: '2017-11-09', temp: 16.5, precip: 0, }, { date: '2017-11-10', temp: 16, precip: 0, }, { date: '2017-11-11', temp: 14.5, precip: 0, }, { date: '2017-11-12', temp: 14.5, precip: 0, }, { date: '2017-11-13', temp: 16.5, precip: 0, }, { date: '2017-11-14', temp: 14.5, precip: 0, }, { date: '2017-11-15', temp: 16.5, precip: 0, }, { date: '2017-11-16', temp: 15, precip: 0, }, { date: '2017-11-17', temp: 17, precip: 0, }, { date: '2017-11-18', temp: 8.5, precip: 0, }, { date: '2017-11-19', temp: 11, precip: 0, }, { date: '2017-11-20', temp: 12, precip: 0, }, { date: '2017-11-21', temp: 15.5, precip: 0, }, { date: '2017-11-22', temp: 18.5, precip: 0, }, { date: '2017-11-23', temp: 18.5, precip: 0, }, { date: '2017-11-24', temp: 18, precip: 0, }, { date: '2017-11-25', temp: 18.5, precip: 0, }, { date: '2017-11-26', temp: 17.5, precip: 0, }, { date: '2017-11-27', temp: 13, precip: 0, }, { date: '2017-11-28', temp: 10, precip: 0, }, { date: '2017-11-29', temp: 12.5, precip: 0, }, { date: '2017-11-30', temp: 11.5, precip: 0, }, { date: '2017-12-01', temp: 14, precip: 0, }, { date: '2017-12-02', temp: 13.5, precip: 0, }, { date: '2017-12-03', temp: 13.5, precip: 0, }, { date: '2017-12-04', temp: 4.5, precip: 0, }, { date: '2017-12-05', temp: 5, precip: 0, }, { date: '2017-12-06', temp: 7, precip: 0, }, { date: '2017-12-07', temp: 6.5, precip: 0, }, { date: '2017-12-08', temp: 10, precip: 0, }, { date: '2017-12-09', temp: 10, precip: 0, }, { date: '2017-12-10', temp: 10, precip: 0, }, { date: '2017-12-11', temp: 10.5, precip: 0, }, { date: '2017-12-12', temp: 12, precip: 0, }, { date: '2017-12-13', temp: 12.5, precip: 0, }, { date: '2017-12-14', temp: 9, precip: 0, }, { date: '2017-12-15', temp: 10, precip: 0, }, { date: '2017-12-16', temp: 8, precip: 0, }, { date: '2017-12-17', temp: 6, precip: 0, }, { date: '2017-12-18', temp: 7.5, precip: 0, }, { date: '2017-12-19', temp: 9.5, precip: 0, }, { date: '2017-12-20', temp: 8.5, precip: 0, }, { date: '2017-12-21', temp: 3, precip: 0, }, { date: '2017-12-22', temp: 4, precip: 0, }, { date: '2017-12-23', temp: 6, precip: 0, }, { date: '2017-12-24', temp: 8, precip: 0, }, { date: '2017-12-25', temp: 10, precip: 0, }, { date: '2017-12-26', temp: 11, precip: 0, }, { date: '2017-12-27', temp: 12, precip: 0, }, { date: '2017-12-28', temp: 12, precip: 0, }, { date: '2017-12-29', temp: 13.5, precip: 0, }, { date: '2017-12-30', temp: 12, precip: 0, }, { date: '2017-12-31', temp: 11, precip: 0, }];