JSFiddle - React, Tailwind, and code Playground
HTML
<h1>Sync Multiple Charts</h1>
<br/><!-- Just so that JSFiddle's Result label doesn't overlap the Chart -->
<div id="chartContainer1" style="height: 360px; width: 100%;"></div>
<div id="chartContainer2" style="height: 360px; width: 100%;"></div>
<script type="text/javascript" src="https://canvasjs.com/assets/script/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<script type="text/javascript">
JavaScript
var data_arr = [];
function getData(chart, url, field) {
$.when($.getJSON(url,
function(json_data) {
data_arr = [];
json_data.feeds.forEach(function(data) {
data_arr.push({
x: new Date(data.created_at),
y: parseFloat(data[field])
});
});
})).then(function(){
chart.options.data[0].dataPoints = data_arr;
chart.render();
});
}
var chart1 = new CanvasJS.Chart("chartContainer1", {
title: {
text: "Pressure"
},
axisX: {
valueFormatString: "HH:mm TT",
// labelAngle: -50
},
data: [{
xValueType: "dateTime",
type: "line",
dataPoints: [],
}]
});
getData(chart1, 'https://api.thingspeak.com/channels/713735/feeds.json?timezone=Europe/Warsaw&days=1×cale=5', 'field2');
var chart2 = new CanvasJS.Chart("chartContainer2", {
title: {
text: "Temperature"
},
axisX: {
valueFormatString: "HH:mm TT",
// labelAngle: -50
},
data: [{
xValueType: "dateTime",
type: "line",
dataPoints: [],
}]
});
getData(chart2, 'https://api.thingspeak.com/channels/713735/feeds.json?timezone=Europe/Warsaw&days=1×cale=5', 'field1');