색상 인코딩

색상 인코딩을 사용하면 데이터에 따라 데이터 요소의 색을 지정할 수 있습니다. 색상 인코딩을 구성하지 않으면 모든 데이터 요소는 팔레트의 첫 번째 색인 기본 색을 사용합니다.

데이터 차트는 세 가지 색상 인코딩을 지원합니다. 숫자가 아닌 색상 인코딩 필드: 필드의 각 값이 색에 매핑되며 각 데이터 요소는 값에 해당하는 색을 사용합니다. 색상 필드는 범주 인코딩 또는 세부 정보 인코딩에 포함되어야 합니다. 숫자 색상 인코딩 필드: 필드의 값 범위가 색상 그라데이션에 매핑되며 각 데이터 요소는 값에 해당하는 색을 사용합니다. GC.Spread.Sheets.DataCharts.EncodingField.valueNames: 각 값 인코딩이 색에 매핑되며 데이터 요소는 값 인코딩에 해당하는 색을 사용합니다. 참고: 데이터 차트를 사용하기 전에 데이터 매니저에서 테이블을 초기화해야 합니다.
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="spreadjs culture" content="ko-kr" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/ko/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$/ko/purejs/node_modules/@mescius/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-print/dist/gc.spread.sheets.print.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-shapes/dist/gc.spread.sheets.shapes.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-datacharts-addon/dist/gc.spread.sheets.datacharts.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-tablesheet/dist/gc.spread.sheets.tablesheet.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-resources-ko/dist/gc.spread.sheets.resources.ko.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script> const designerDependencyScripts = [ '$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-charts/dist/gc.spread.sheets.charts.min.js', '$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-barcode/dist/gc.spread.sheets.barcode.min.js', '$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-pdf/dist/gc.spread.sheets.pdf.min.js', '$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-pivot-addon/dist/gc.spread.pivot.pivottables.min.js', '$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-slicers/dist/gc.spread.sheets.slicers.min.js', '$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-reportsheet-addon/dist/gc.spread.report.reportsheet.min.js', '$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-ganttsheet/dist/gc.spread.sheets.ganttsheet.min.js', '$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-formula-panel/dist/gc.spread.sheets.formulapanel.min.js', '$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-io/dist/gc.spread.sheets.io.min.js', '$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-designer-resources-ko/dist/gc.spread.sheets.designer.resource.ko.min.js', '$DEMOROOT$/ko/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%; }