JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<input type="file" id="input">
<div id="chartContainer" style="height: 360px; width: 100%;"></div>
JavaScript
var chart = new CanvasJS.Chart("chartContainer", {
title: {
text: "Chart from Text File"
},
dataPointWidth: 1,
axisX: {
valueFormatString: "MM-YYYY"
},
axisY: {
valueFormatString: "0.00",
suffix: "°C"
},
data: [
{
type: "column",
color: "grey",
xValueFormatString: "MM-YYYY",
dataPoints: []
},
{
type: "spline",
color: "grey",
xValueFormatString: "MM-YYYY",
markerType: "square",
indexLabel: "{y}",
markerColor: "red",
markerBorderColor: "black",
markerBorderThickness: 1,
dataPoints: []
}
]
});
//-- Event handler for the input tag
var inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles, false);
function handleFiles() {
var fileList = this.files;
var reader = new FileReader();
reader.readAsText(fileList[0]);
reader.onload = function() {
renderChart(reader);
}
}
function renderChart(reader) {
var dpsList = reader.result;
var dataPoint;
var dps1= [], dps2 = [], dps3 = [];
dpsList = dpsList.split("\n");
for(var i = 1; i < dpsList.length; i++) {
var separateData = dpsList[i].split(" ");
yVal = parseFloat(separateData[4]);
xVal = new Date(parseInt(separateData[0]), parseInt(separateData[1]));
chart.options.data[0].dataPoints.push({x: xVal, y: yVal});
chart.options.data[1].dataPoints.push({x: xVal, y: yVal});
}
chart.render();
}
/*
Format of text file used
YR MON TOTAL ClimAdjust ANOM
1950 1 24.56 26.18 -1.62
1950 2 25.07 26.39 -1.32
1950 3 25.88 26.95 -1.07
1950 4 26.29 27.39 -1.11
1950 5 26.19 27.56 -1.37
1950 6 26.47 27.21 -0.74
1950 7 26.28 26.72 -0.44
1950 8 25.88 26.30 -0.42
1950 9 25.73 26.14 -0.41
1950 10 25.68 26.01 -0.32
1950 11 25.46 26.06 -0.60
1950 12 25.29 26.18 -0.88
1951 1 25.26 26.18 -0.92
1951 2 25.72 26.39 -0.66
1951 3 26.91 26.95 -0.04
1951 4 27.59 27.39 0.20
1951 5 27.93 27.56 0.37
1951 6 27.73 27.21...