JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://canvasjs.com/assets/script/jquery-1.11.1.min.js"></script>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<div id="chartContainer" style="width:100%; height:450px;"></div>
JavaScript
var data = [], dataPoints = [];
var chart = new CanvasJS.Chart("chartContainer", {
title: {
text: "Multi-Series Chart with Data from CSV",
},
toolTip: {
shared: true
},
legend :{
cursor: "pointer",
itemclick: function (e) { //adding hide/unhide DataSeries on legend click
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
e.dataSeries.visible = false;
} else {
e.dataSeries.visible = true;
}
e.chart.render();
}
},
data: data
});
$.get("https://docs.google.com/spreadsheets/d/e/2PACX-1vQ489Z9OH1xZcksHOzU3_VuKqQ_mFSItw0ycUf9iJUStDeI2r47ejyAXlLDBcvpT9Hh95VfzEudYC1A/pub?gid=1693072701&single=true&output=csv", parseData);
function parseData(csv) {
var dataPoints = csvLines = points = [];
var dateTime = [];
csvLines = csv.split(/[\r?\n|\r|\n]+/);
var noOfSeries = csvLines[0].split(";").length - 1;
for(var j = 0; j < noOfSeries; j++)
chart.options.data.push({ type: "line", showInLegend: true, dataPoints: [] });
for (var i = 1; i < csvLines.length; i++) {
if (csvLines[i].length > 0) {
points = csvLines[i].split(";");
dateTime = points[0].split(".");
dateTime = dateTime[2] - 1 + "-" + dateTime[1] + "-" + dateTime [0];
for(var j = 1; j < points.length; j++) {
chart.options.data[j-1].dataPoints.push({x: new Date(dateTime), y: points[j] === "" ? null : Number(points[j])});
}
}
}
for(var i = 1; i < 4; i++) //changing the markerSize to make dataSeries with less dataPoints visible
chart.options.data[i].markerSize = 8;
for(var i = 0; i < noOfSeries; i++) { //adding names to each dataSeries
points = csvLines[0].split(";");
chart.options.data[i].name = points[i+1]
}
chart.render();
}