Color Encoding

Color encoding allows data points to be colored based on the data. When color encoding is not configured, all data points use the default color, which is the first color in the palette.

Data Charts support three kinds of color encoding. Non-numeric color encoding field. Each value in this field maps to a color, and each data point gets the corresponding color based on its value. The color field must be present in either category encoding or detail encoding; otherwise, it will not take effect. Numeric color encoding field. The value range of this field is mapped to a color gradient, and each data point gets its corresponding color based on its value. GC.Spread.Sheets.DataCharts.EncodingField.valueNames. Each value encoding maps to a color, and each data point gets the corresponding color based on its value encoding. Notes: before using the data chart, tables in data manager should be initialized.
window.onload = async () => { const { spread, designer } = createSpreadAndDesigner(); await initDataManager(spread); const dataChart1 = spread.getActiveSheet().dataCharts.add('chart', 62, 20, 480, 300, GC.Spread.Sheets.DataCharts.DataChartType.column); dataChart1.setChartConfig({ tableName: 'Sales', plots: [{ type: GC.Spread.Sheets.DataCharts.DataChartType.column, encodings: { values: [{ field: 'Sales' }], category: { field: 'Product' }, details: [{ field: 'Region' }], color: { field: 'Region' }, }, }], config: { header: { title: 'Column Chart with Non-Numeric Color', padding: { left: 16, right: 16, top: 5, bottom: 0, }, textStyle: { fontSize: 19, fontStyle: GC.Spread.Sheets.DataCharts.FontStyle.italic, alignment: GC.Spread.Sheets.DataCharts.HAlign.left, }, }, }, }); const dataChart2 = spread.getActiveSheet().dataCharts.add('chart', 558, 20, 480, 300, GC.Spread.Sheets.DataCharts.DataChartType.column); dataChart2.setChartConfig({ tableName: 'Sales', plots: [{ type: GC.Spread.Sheets.DataCharts.DataChartType.column, encodings: { values: [{ field: 'Sales' }], category: { field: 'Product' }, details: [{ field: 'Region' }], color: { field: 'Sales' }, }, }], config: { header: { title: 'Column Chart with Numeric Color', padding: { left: 16, right: 16, top: 5, bottom: 0, }, textStyle: { fontSize: 19, fontStyle: GC.Spread.Sheets.DataCharts.FontStyle.italic, alignment: GC.Spread.Sheets.DataCharts.HAlign.left, }, }, }, }); const dataChart3 = spread.getActiveSheet().dataCharts.add('chart', 62, 340, 480, 300, GC.Spread.Sheets.DataCharts.DataChartType.column); dataChart3.setChartConfig({ tableName: 'Sales', plots: [{ type: GC.Spread.Sheets.DataCharts.DataChartType.column, encodings: { values: [{ field: 'Sales' }, { field: 'Return' }], category: { field: 'Product' }, color: { field: GC.Spread.Sheets.DataCharts.EncodingField.valueNames }, }, }], config: { header: { title: 'Column Chart with Value Names Color', padding: { left: 16, right: 16, top: 5, bottom: 0, }, textStyle: { fontSize: 19, fontStyle: GC.Spread.Sheets.DataCharts.FontStyle.italic, alignment: GC.Spread.Sheets.DataCharts.HAlign.left, }, }, }, }); const dataChart4 = spread.getActiveSheet().dataCharts.add('chart', 558, 340, 480, 300, GC.Spread.Sheets.DataCharts.DataChartType.column); dataChart4.setChartConfig({ tableName: 'Sales', plots: [{ type: GC.Spread.Sheets.DataCharts.DataChartType.column, encodings: { values: [{ field: 'Sales' }], category: { field: 'Product' }, details: [{ field: 'Region' }], }, }], config: { header: { title: 'Column Chart without Color', padding: { left: 16, right: 16, top: 5, bottom: 0, }, textStyle: { fontSize: 19, fontStyle: GC.Spread.Sheets.DataCharts.FontStyle.italic, alignment: GC.Spread.Sheets.DataCharts.HAlign.left, }, }, }, }); spread.getActiveSheet().dataCharts.all()[0].isSelected(true); if (designer) { designer.refresh(); } } function createSpreadAndDesigner() { const demoHost = document.getElementById('demo-host'); if (window !== top) { const spread = new GC.Spread.Sheets.Workbook('spread-host', { sheetCount: 1 }); new GC.Spread.Sheets.DataCharts.DataChartConfigPanel('panel-host', spread); return { spread } } else { const designer = new GC.Spread.Sheets.Designer.Designer(demoHost, undefined, undefined, { sheetCount: 1 }); return { designer, spread: designer.getWorkbook(), } } } async function initDataManager(spread) { const records = [ ['North', 'Laptop', 12500, 320], ['North', 'Tablet', 8600, 210], ['North', 'Phone', 15400, 410], ['North', 'Monitor', 7400, 190], ['North', 'Keyboard', 5300, 130], ['South', 'Laptop', 11200, 280], ['South', 'Tablet', 9700, 260], ['South', 'Phone', 18200, 520], ['South', 'Monitor', 6800, 175], ['South', 'Keyboard', 6100, 150], ]; const columns = ['Region', 'Product', 'Sales', 'Return']; await spread.dataManager().addTable('Sales', { data: records.map(record => { const item = {}; columns.forEach((column, index) => { item[column] = record[index]; }); return item; }), }).fetch(); }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-designer/styles/gc.spread.sheets.designer.light.min.css"> <link rel="stylesheet" type="text/css" href="styles.css"> <script src="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-print/dist/gc.spread.sheets.print.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-shapes/dist/gc.spread.sheets.shapes.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-datacharts-addon/dist/gc.spread.sheets.datacharts.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-tablesheet/dist/gc.spread.sheets.tablesheet.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script> const designerDependencyScripts = [ '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-charts/dist/gc.spread.sheets.charts.min.js', '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-barcode/dist/gc.spread.sheets.barcode.min.js', '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-pdf/dist/gc.spread.sheets.pdf.min.js', '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-pivot-addon/dist/gc.spread.pivot.pivottables.min.js', '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-slicers/dist/gc.spread.sheets.slicers.min.js', '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-reportsheet-addon/dist/gc.spread.report.reportsheet.min.js', '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-ganttsheet/dist/gc.spread.sheets.ganttsheet.min.js', '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-formula-panel/dist/gc.spread.sheets.formulapanel.min.js', '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-io/dist/gc.spread.sheets.io.min.js', '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-designer-resources-en/dist/gc.spread.sheets.designer.resource.en.min.js', '$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-designer/dist/gc.spread.sheets.designer.all.min.js', '$DEMOROOT$/spread/source/js/designer/license.js', ] function appendScriptNode (src) { const script = document.createElement('script'); script.src = src; script.async = false; script.type = 'text/javascript'; document.head.appendChild(script); } if (top === window) { // not in iframe designerDependencyScripts.forEach(appendScriptNode); } </script> <script src="app.js" type="text/javascript"></script> </head> <body> <div class="sample-tutorial"> <div id="demo-host"> <div id="spread-host"></div> <div id="panel-host"></div> </div> </div> </body> </html>
body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .sample-tutorial { position: relative; height: 100%; overflow: hidden; } #demo-host { width: 100%; height: 100%; overflow: hidden; float: left; } #spread-host { position: absolute; top: 0; left: 0; width: calc(100% - 380px); height: 100%; } #panel-host { position: absolute; top: 0; right: 0; width: 380px; height: 100%; }