<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingSoft Demo</title> <script nonce="undefined" src="https://cdn.zingchart.com/zingchart.min.js"></script> <script nonce="undefined"> zingchart.MODULESDIR = "https://cdn.zingchart.com/modules/"; ZC.LICENSE = ["bab21d016b2dadc18447d2a055f061e3"]; </script> <style> .zc-body { margin: 10px; padding: 10px; background-color: #fff; } input, button, select, textarea, label { font-family: 'Lucida Sans Unicode', Monaco, Tahoma, Verdana, Arial; } .zc-watermark { display: none; } ; </style> </head> <body class="zc-body"> <div> <div id="zch"></div> <div id="zcg" style="float:left"></div> <div id="zcv" style="float:left"></div> </div> <script> ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"]; let iCols = 100; let iRows = 50; let iSize = 5; let chartConfig = { type: 'null', backgroundColor: '#fff', flat: true, heatmap: { alpha: 1, blur: iSize, brushType: 'square', maxValue: 1, minValue: 0, size: iSize, }, }; function createArr(iCols, iRows) { let aData = new Array(iCols); for (let i = 0; i < aData.length; i++) { aData[i] = new Array(iRows); } return aData; } let aGrid = createArr(iCols, iRows); let aHValues = [], aVValues = []; for (let i = 0; i < iCols; i++) { aHValues[i] = 0; for (let j = 0; j < iRows; j++) { aGrid[i][j] = Math.floor(2 * Math.random()); if (aVValues[j] === null || typeof aVValues[j] === 'undefined') { aVValues[j] = 0; } aHValues[i] += aGrid[i][j]; aVValues[j] += aGrid[i][j]; } } zingchart.bind('zcg', 'load', function() { step(); }); function step() { let i, j; let aNextGrid = createArr(iCols, iRows); aHValues = []; aVValues = []; for (i = 0; i < iCols; i++) { aHValues[i] = 0; for (j = 0; j < iRows; j++) { let iState = aGrid[i][j]; let iSum = 0; let iNeighbors = countNeighbors(aGrid, i, j); if (iState === 0 && iNeighbors === 3) { aNextGrid[i][j] = 1; } else if (iState === 1 && (iNeighbors < 2 || iNeighbors > 3)) { aNextGrid[i][j] = 0; } else { aNextGrid[i][j] = iState; } aHValues[i] += aNextGrid[i][j]; if (aVValues[j] === null || typeof aVValues[j] === 'undefined') { aVValues[j] = 0; } aVValues[j] += aNextGrid[i][j]; } } aGrid = aNextGrid; let aData = []; for (i = 0; i < iCols; i++) { for (j = 0; j < iRows; j++) { aData.push([i * iSize, j * iSize, aGrid[i][j]]); } } zingchart.exec('zcg', 'heatmap.setdata', { data: aData, }); zingchart.exec('zch', 'setseriesvalues', { plotindex: 0, values: aHValues, }); zingchart.exec('zcv', 'setseriesvalues', { plotindex: 0, values: aVValues, }); window.setTimeout(step, 15); } function countNeighbors(aGrid, iX, iY) { let iSum = 0; for (let i = -1; i < 2; i++) { for (let j = -1; j < 2; j++) { let iCol = (iX + i + iCols) % iCols; let iRow = (iY + j + iRows) % iRows; iSum += aGrid[iCol][iRow]; } } iSum -= aGrid[iX][iY]; return iSum; } zingchart.loadModules('heatmap', function() { zingchart.render({ id: 'zcg', width: iCols * iSize, height: iRows * iSize, output: 'canvas', data: chartConfig, modules: 'heatmap', }); zingchart.render({ id: 'zch', width: iCols * iSize, height: '80px', output: 'canvas', data: { flat: true, type: 'area', title: { text: 'Game of Life using Heatmap module', fontSize: '11px', align: 'left', }, plot: { shadow: false, aspect: 'stepped', lineWidth: '1px', maxNodes: 0, maxTrackers: 0, }, plotarea: { margin: '20 0 0 0', }, scaleX: { visible: false, }, scaleY: { visible: false, }, series: [{ values: aHValues, }, ], }, }); zingchart.render({ id: 'zcv', width: '80px', height: iRows * iSize, output: 'canvas', data: { type: 'varea', flat: true, plot: { shadow: false, aspect: 'stepped', maxNodes: 0, maxTrackers: 0, lineWidth: '1px', }, plotarea: { margin: '0 20 0 0', }, scaleX: { mirrored: true, visible: false, }, scaleY: { visible: false, }, series: [{ values: aHValues, }, ], }, }); }); </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingSoft Demo</title> <script src="https://cdn.zingchart.com/zingchart.min.js"></script> <script> zingchart.MODULESDIR = "https://cdn.zingchart.com/modules/"; ZC.LICENSE = ["bab21d016b2dadc18447d2a055f061e3"]; </script> </head> <body class="zc-body"> <div> <div id="zch"></div> <div id="zcg" style="float:left"></div> <div id="zcv" style="float:left"></div> </div> </body> </html>
.zc-body { margin: 10px; padding: 10px; background-color: #fff; } input, button, select, textarea, label { font-family: 'Lucida Sans Unicode', Monaco, Tahoma, Verdana, Arial; } .zc-watermark { display: none; } ;
let iCols = 100; let iRows = 50; let iSize = 5; let chartConfig = { type: 'null', backgroundColor: '#fff', flat: true, heatmap: { alpha: 1, blur: iSize, brushType: 'square', maxValue: 1, minValue: 0, size: iSize, }, }; function createArr(iCols, iRows) { let aData = new Array(iCols); for (let i = 0; i < aData.length; i++) { aData[i] = new Array(iRows); } return aData; } let aGrid = createArr(iCols, iRows); let aHValues = [], aVValues = []; for (let i = 0; i < iCols; i++) { aHValues[i] = 0; for (let j = 0; j < iRows; j++) { aGrid[i][j] = Math.floor(2 * Math.random()); if (aVValues[j] === null || typeof aVValues[j] === 'undefined') { aVValues[j] = 0; } aHValues[i] += aGrid[i][j]; aVValues[j] += aGrid[i][j]; } } zingchart.bind('zcg', 'load', function() { step(); }); function step() { let i, j; let aNextGrid = createArr(iCols, iRows); aHValues = []; aVValues = []; for (i = 0; i < iCols; i++) { aHValues[i] = 0; for (j = 0; j < iRows; j++) { let iState = aGrid[i][j]; let iSum = 0; let iNeighbors = countNeighbors(aGrid, i, j); if (iState === 0 && iNeighbors === 3) { aNextGrid[i][j] = 1; } else if (iState === 1 && (iNeighbors < 2 || iNeighbors > 3)) { aNextGrid[i][j] = 0; } else { aNextGrid[i][j] = iState; } aHValues[i] += aNextGrid[i][j]; if (aVValues[j] === null || typeof aVValues[j] === 'undefined') { aVValues[j] = 0; } aVValues[j] += aNextGrid[i][j]; } } aGrid = aNextGrid; let aData = []; for (i = 0; i < iCols; i++) { for (j = 0; j < iRows; j++) { aData.push([i * iSize, j * iSize, aGrid[i][j]]); } } zingchart.exec('zcg', 'heatmap.setdata', { data: aData, }); zingchart.exec('zch', 'setseriesvalues', { plotindex: 0, values: aHValues, }); zingchart.exec('zcv', 'setseriesvalues', { plotindex: 0, values: aVValues, }); window.setTimeout(step, 15); } function countNeighbors(aGrid, iX, iY) { let iSum = 0; for (let i = -1; i < 2; i++) { for (let j = -1; j < 2; j++) { let iCol = (iX + i + iCols) % iCols; let iRow = (iY + j + iRows) % iRows; iSum += aGrid[iCol][iRow]; } } iSum -= aGrid[iX][iY]; return iSum; } zingchart.loadModules('heatmap', function() { zingchart.render({ id: 'zcg', width: iCols * iSize, height: iRows * iSize, output: 'canvas', data: chartConfig, modules: 'heatmap', }); zingchart.render({ id: 'zch', width: iCols * iSize, height: '80px', output: 'canvas', data: { flat: true, type: 'area', title: { text: 'Game of Life using Heatmap module', fontSize: '11px', align: 'left', }, plot: { shadow: false, aspect: 'stepped', lineWidth: '1px', maxNodes: 0, maxTrackers: 0, }, plotarea: { margin: '20 0 0 0', }, scaleX: { visible: false, }, scaleY: { visible: false, }, series: [{ values: aHValues, }, ], }, }); zingchart.render({ id: 'zcv', width: '80px', height: iRows * iSize, output: 'canvas', data: { type: 'varea', flat: true, plot: { shadow: false, aspect: 'stepped', maxNodes: 0, maxTrackers: 0, lineWidth: '1px', }, plotarea: { margin: '0 20 0 0', }, scaleX: { mirrored: true, visible: false, }, scaleY: { visible: false, }, series: [{ values: aHValues, }, ], }, }); });