Gradient Legend in JavaScript
Using ApexCharts with JavaScript
This Gradient Legend example uses ApexCharts.js directly in JavaScript, with no wrapper component.
Install it with npm install apexcharts, then mount the chart with new ApexCharts(element, options).render().
// Seeded PRNG so the heatmap is identical on every load (stable snapshots).
var __seed = 0x33c4e5f6
function rand() {
__seed |= 0
__seed = (__seed + 0x6d2b79f5) | 0
var t = Math.imul(__seed ^ (__seed >>> 15), 1 | __seed)
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t
return ((t ^ (t >>> 14)) >>> 0) / 4294967296
}
function generateData(count, yrange) {
var i = 0
var series = []
while (i < count) {
var x = (i + 1).toString()
var y = Math.floor(rand() * (yrange.max - yrange.min + 1)) + yrange.min
series.push({
x: x,
y: y,
})
i++
}
return series
}
var options = {
series: [
{
name: 'Jan',
data: generateData(18, { min: 0, max: 90 }),
},
{
name: 'Feb',
data: generateData(18, { min: 10, max: 90 }),
},
{
name: 'Mar',
data: generateData(18, { min: 20, max: 100 }),
},
{
name: 'Apr',
data: generateData(18, { min: 10, max: 100 }),
},
{
name: 'May',
data: generateData(18, { min: 0, max: 50 }),
},
{
name: 'Jun',
data: generateData(18, { min: 0, max: 90 }),
},
{
name: 'Jul',
data: generateData(18, { min: 0, max: 90 }),
},
{
name: 'Aug',
data: generateData(18, { min: 0, max: 90 }),
},
{
name: 'Sep',
data: generateData(18, { min: 0, max: 90 }),
},
{
name: 'Oct',
data: generateData(18, { min: 0, max: 90 }),
},
{
name: 'Nov',
data: generateData(18, { min: 0, max: 90 }),
},
{
name: 'Dec',
data: generateData(18, { min: 0, max: 90 }),
},
],
chart: {
height: 380,
type: 'heatmap',
},
plotOptions: {
heatmap: {
shadeIntensity: 0.5,
radius: 2,
useFillColorAsStroke: false,
colorScale: {
// Continuous gradient legend replaces the default categorical legend.
// The arrow tracks the hovered cell's value along the spectrum and
// automatically reorients based on legend.position.
gradientLegend: {
enabled: true,
width: '75%',
thickness: 14,
showHoverValue: true,
},
},
},
},
colors: ['#008FFB'],
dataLabels: {
enabled: false,
},
stroke: {
width: 1,
},
legend: {
position: 'right',
},
title: {
text: 'Monthly Rainfall (mm) — continuous gradient legend',
},
}
var chart = new ApexCharts(document.querySelector('#chart'), options)
chart.render()