In this chapter, we will introduce the Highcharts heatmap.
We have already learned about Highcharts configuration syntax in previous chapters. Next, let's look at other Highcharts configurations.
* * *
## Heatmap
### chart Configuration
Configure the chart type as 'heatmap'. chart.type describes the chart type. The default value is "line".
var chart = { type: 'heatmap'};
### Example
File Name: highcharts_heat_map.htm
$(document).ready(function() { var chart = { type: 'heatmap', marginTop: 40, marginBottom: 80 }; var title = { text: 'Sales per employee each day of the week' }; var xAxis = { categories: ['Alexander', 'Marie', 'Maximilian', 'Sophia', 'Lukas', 'Maria', 'Leon', 'Anna', 'Tim', 'Laura'] }; var yAxis = { categories: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'], title: null }; var colorAxis = { min: 0, minColor: '#FFFFFF', maxColor: Highcharts.getOptions().colors }; var legend = { align: 'right', layout: 'vertical', margin: 0, verticalAlign: 'top', y: 25, symbolHeight: 280 }; var tooltip = { formatter: function () { return '' + this.series.xAxis.categories[this.point.x] + ' sold
' + this.point.value + ' items on
' + this.series.yAxis.categories[this.point.y] + ''; } }; var series= [{ name: 'Sales per employee', borderWidth: 1, data: [[0, 0, 10], [0, 1, 19], [0, 2, 8], [0, 3, 24], [0, 4, 67], [1, 0, 92], [1, 1, 58], [1, 2, 78], [1, 3, 117], [1, 4, 48], [2, 0, 35], [2, 1, 15], [2, 2, 123], [2, 3, 64], [2, 4, 52], [3, 0, 72], [3, 1, 132], [3, 2, 114], [3, 3, 19], [3, 4, 16], [4, 0, 38], [4, 1, 5], [4, 2, 8], [4, 3, 117], [4, 4, 115], [5, 0, 88], [5, 1, 32], [5, 2, 12], [5, 3, 6], [5, 4, 120], [6, 0, 13], [6, 1, 44], [6, 2, 88], [6, 3, 98], [6, 4, 96], [7, 0, 31], [7, 1, 1], [7, 2, 82], [7, 3, 32], [7, 4, 30], [8, 0, 85], [8, 1, 97], [8, 2, 123], [8, 3, 64], [8, 4, 84], [9, 0, 47], [9, 1, 114], [9, 2, 31], [9, 3, 48], [9, 4, 91]], dataLabels: { enabled: true, color: '#000000' } }]; var json = {}; json.chart = chart; json.title = title; json.xAxis = xAxis; json.yAxis = yAxis; json.colorAxis = colorAxis; json.legend = legend; json.tooltip = tooltip; json.series = series; $('#container').highcharts(json);});
The output of the above example is:
* * *
## Large Dataset Heatmap
### Example
File Name: highcharts_heat_largemap.htm (For the full source code, please click "Try it")
β¦β¦ β¦β¦ β¦β¦ $(document).ready(function() { /** * This plugin extends Highcharts in two ways: * - Use HTML5 canvas instead of SVG for rendering of the heatmap squares. Canvas * outperforms SVG when it comes to thousands of single shapes. * - Add a K-D-tree to find the nearest point on mouse move. Since we no longer have SVG shapes * to capture mouseovers, we need another way of detecting hover points for the tooltip. */ (function (H) { var wrap = H.wrap, seriesTypes = H.seriesTypes; /** * Get the canvas context for a series */ H.Series.prototype.getContext = function () { var canvas; if (!this.ctx) { canvas = document.createElement('canvas'); canvas.setAttribute('width', this.chart.plotWidth); canvas.setAttribute('height', this.chart.plotHeight); canvas.style.position = 'absolute'; canvas.style.left = this.group.translateX + 'px'; canvas.style.top = this.group.translateY + 'px'; canvas.style.zIndex = 0; canvas.style.cursor = 'crosshair'; this.chart.container.appendChild(canvas); if (canvas.getContext) { this.ctx = canvas.getContext('2d'); } } return this.ctx; } /** * Wrap the drawPoints method to draw the points in canvas instead of the slower SVG, * that requires one shape each point. */ H.wrap(H.seriesTypes.heatmap.prototype, 'drawPoints', function (proceed) { var ctx; if (this.chart.renderer.forExport) { // Run SVG shapes proceed.call(this); } else { if (ctx = this.getContext()) { // draw the columns H.each(this.points, function (point) { var plotY = point.plotY, shapeArgs; if (plotY !== undefined && !isNaN(plotY) && point.y !== null) { shapeArgs = point.shapeArgs; ctx.fillStyle = point.pointAttr[''].fill; ctx.fillRect(shapeArgs.x, shapeArgs.y, shapeArgs.width, shapeArgs.height); } }); } else { this.chart.showLoading("Your browser doesn't support HTML5 canvas,
please use a modern browser"); // Uncomment this to provide low-level (slow) support in oldIE. It will cause script errors on // charts with more than a few thousand points. //proceed.call(this); } } }); }(Highcharts)); var data = { csv: document.getElementById('csv').innerHTML, parsed: function () { start = +new Date(); } }; var chart = { type: 'heatmap', margin: [60, 10, 80, 50] }; var title = { text: 'Highcharts extended heat map', align: 'left', x: 40 }; var subtitle = { text: 'Temperature variation by day and hour through 2013', align: 'left', x: 40 }; var xAxis = { type: 'datetime', min: Date.UTC(2013, 0, 1), max: Date.UTC(2014, 0, 1), labels: { align: 'left', x: 5, y: 14, format: '{value:%B}' // long month }, showLastLabel: false, tickLength: 16 }; var yAxis = { title: { text: null }, labels: { format: '{value}:00' }, minPadding: 0, maxPadding: 0, startOnTick: false, endOnTick: false, tickPositions: [0, 6, 12, 18, 24], tickWidth: 1, min: 0, max: 23, reversed: true }; var colorAxis = { stops: [ [0, '#3060cf'], [0.5, '#fffbbc'], [0.9, '#c4463a'], [1, '#c4463a'] ], min: -15, max: 25, startOnTick: false, endOnTick: false, labels: { format: '{value}Β°' } }; var series= [{ borderWidth: 0, nullColor: '#EFEFEF', colsize: 24 * 36e5, // one day tooltip: { headerFormat: 'Temperature
', pointFormat: '{point.x:%e %b, %Y} {point.y}:00: {point.value} Β°' }, turboThreshold: Number.MAX_VALUE // #3404, remove after 4.0.5 release }]; var json = {}; json.chart = chart; json.data = data; json.title = title; json.xAxis = xAxis; json.yAxis = yAxis; json.colorAxis = colorAxis; json.series = series; $('#container').highcharts(json);});
The output of the above example is:
π Categories
- β‘ JavaScript (1589)
- π PHP (872)
- π Python3 (810)
- π HTML (691)
- βοΈ C# (650)
- π Python (594)
- β Java (552)
- βοΈ PyTorch (534)
- π§ Linux (472)
- βοΈ C (432)
- π¦ jQuery (406)
- π¨ CSS (377)
- π XML (259)
- π¦ jQuery UI (231)
- π― Bootstrap (220)
- βοΈ C++ (215)
- π °οΈ Angular (205)
- π HTML DOM (201)
- π΄ Redis (188)
- π Web Building (142)
- π Vue.js (141)
- π R (131)
- πΌ Pandas (124)
- ποΈ SQL (105)
- βοΈ Docker (86)
- βοΈ TypeScript (73)
- βοΈ Highcharts (70)
- π AI Agent (70)
- βοΈ React (68)
- π Node.js (65)
- βοΈ Machine Learning (60)
- π Git (59)
- π΅ Go (58)
- π Markdown (58)
- π’ NumPy (55)
- π§ͺ Flask (54)
- βοΈ Scala (53)
- ποΈ SQLite (52)
- π JSTL (52)
- βοΈ VS Code (51)
- π MongoDB (49)
- π Perl (48)
- π Ruby (47)
- π Matplotlib (47)
- βοΈ Uncategorized (46)
- π Swift (46)
- ποΈ PostgreSQL (46)
- βοΈ Data Structures (46)
- π Playwright (46)
- π iOS (45)
- ποΈ MySQL (44)
- βοΈ LangChain (43)
- π FastAPI (40)
- βοΈ Ionic (38)
- π Design Patterns (37)
- βοΈ Eclipse (37)
- π¨ CSS3 (34)
- π Lua (34)
- βοΈ Codex (34)
- πΈ Django (32)
- βοΈ OpenCV (32)
- π Rust (31)
- π JSP (31)
- βοΈ Claude Code (31)
- π Pillow (30)
- βοΈ OpenCode (28)
- π AI Skills (27)
- π Flutter (26)
- π Maven (26)
- π¨ Tailwind CSS (25)
- π§ TensorFlow (25)
- π Servlet (24)
- π Dart (23)
- π Assembly (23)
- βοΈ Memcached (22)
- βοΈ SVG (22)
- βοΈ Electron (22)
- π NLP (22)
- π Regex (21)
- π Android (20)
- π£ Kotlin (19)
- π Julia (19)
- π SOAP (17)
- π Selenium (17)
- π PowerShell (17)
- π Sass (16)
- π HTTP (16)
- π Zig (15)
- π AI (15)
- π AJAX (14)
- π Swagger (14)
- βοΈ Scikit-learn (13)
- βοΈ ECharts (13)
- βοΈ Chart.js (13)
- βοΈ Cursor (13)
- βοΈ SciPy (12)
- π RDF (12)
- π Ollama (12)
- π Next.js (12)
- π Plotly Dash (12)
- π JSON (11)
- π RESTful API (11)
- π WSDL (9)
- βοΈ CMake (8)
- π Firebug (7)
- π Nginx (6)
- βΈοΈ Kubernetes (6)
- π Jupyter (6)
- π LaTeX (4)
- π UniApp (4)
- ποΈ SQL Server (1)
YouTip