Created
June 21, 2020 16:09
-
-
Save gchacaltana/a746c4da5d4bbb0ca1db72894554591f to your computer and use it in GitHub Desktop.
Insert horizontal lines (median, maximum, minimum) to ChartJS chart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var canvas = document.getElementById("myChart"); | |
var ctx = canvas.getContext("2d"); | |
var horizonalLinePlugin = { | |
afterDraw: function(chartInstance) { | |
var yScale = chartInstance.scales["y-axis-0"]; | |
var canvas = chartInstance.chart; | |
var ctx = canvas.ctx; | |
var index; | |
var line; | |
var style; | |
if (chartInstance.options.horizontalLine) { | |
for (index = 0; index < chartInstance.options.horizontalLine.length; index++) { | |
line = chartInstance.options.horizontalLine[index]; | |
if (!line.style) { | |
style = "rgba(169,169,169, .6)"; | |
} else { | |
style = line.style; | |
} | |
if (line.y) { | |
yValue = yScale.getPixelForValue(line.y); | |
} else { | |
yValue = 0; | |
} | |
ctx.lineWidth = 3; | |
if (yValue) { | |
ctx.beginPath(); | |
ctx.moveTo(0, yValue); | |
ctx.lineTo(canvas.width, yValue); | |
ctx.strokeStyle = style; | |
ctx.stroke(); | |
} | |
if (line.text) { | |
ctx.fillStyle = style; | |
ctx.fillText(line.text, 0, yValue + ctx.lineWidth); | |
} | |
} | |
return; | |
}; | |
} | |
}; | |
Chart.pluginService.register(horizonalLinePlugin); | |
var data = { | |
labels: ["January", "February", "March", "April", "May", "June", "July"], | |
datasets: [{ | |
label: "My First dataset", | |
fill: false, | |
lineTension: 0.1, | |
backgroundColor: "rgba(75,192,192,0.4)", | |
borderColor: "rgba(75,192,192,1)", | |
borderCapStyle: 'butt', | |
borderDash: [], | |
borderDashOffset: 0.0, | |
borderJoinStyle: 'miter', | |
pointBorderColor: "rgba(75,192,192,1)", | |
pointBackgroundColor: "#fff", | |
pointBorderWidth: 1, | |
pointHoverRadius: 5, | |
pointHoverBackgroundColor: "rgba(75,192,192,1)", | |
pointHoverBorderColor: "rgba(220,220,220,1)", | |
pointHoverBorderWidth: 2, | |
pointRadius: 1, | |
pointHitRadius: 10, | |
data: [65, 59, 80, 81, 56, 55, 40], | |
}] | |
}; | |
var myChart = new Chart(ctx, { | |
type: 'line', | |
data: data, | |
options: { | |
"horizontalLine": [{ | |
"y": 82, | |
"style": "rgba(255, 0, 0, .4)", | |
"text": "max" | |
}, { | |
"y": 60, | |
"style": "#00ffff", | |
}, { | |
"y": 44, | |
"text": "min" | |
}] | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment