추세선

추세선은 특정 데이터 계열에서 기울기(또는 추세)를 나타내는 추가적인 선입니다.

설명
app.js
index.html
styles.css

추세선은 특정 데이터 계열에서 기울기(또는 추세)를 나타내는 추가적인 선이며 최적 맞춤 선이라고도 합니다. 추세선은 현재 데이터를 기반으로 미래 값을 예측할 수 있으므로 데이터를 분석할 때 유용할 수 있습니다.

사용자는 선형, 지수, 로그, 다항식, 거듭제곱(power) 및 이동 평균을 포함한 6가지 유형의 추세선을 만들 수 있습니다.

  • 선형\: 간단한 선형 데이터 집합에 대한 최적 맞춤 직선입니다.
  • 지수\: 데이터 값이 증가하거나 감소한 후 평준화되는 방법을 보여 주는 최적 맞춤 곡선입니다.
  • 로그\: 데이터 값이 증가하거나 감소한 후 평준화됨을 보여 주는 최적 맞춤 곡선입니다.
  • 다항식\: order 속성에 따른 데이터 값의 변동을 보여 주는 곡선입니다.
  • 거듭제곱(Power)\: 특정 비율로 증가하는 측정값을 비교하기 위한 곡선입니다.
  • 이동 평균\: 특정 개수 데이터 요소의 평균을 계산하고 해당 값을 선의 지점으로 사용합니다.

추세선은 다음 차트 유형을 지원합니다. * 세로 막대형 * 막대형 * 꺾은선형 * 분산형 * 영역형

다음 코드를 사용하여 선형 추세선을 만들 수 있습니다.

    var series = chart.series().get(0);
    series.trendlines = [
        {
            type: GC.Spread.Sheets.Charts.TrendlineType.linear,
        },
    ];
    chart.series().set(0, series);

사용자 정의

order: 다항식의 조건 수를 지정합니다. 순서는 2~6 범위의 정수입니다.

intercept: 선형, 지수, 다항식 추세선의 절편을 지정합니다.

displayEquation 및 displayRSquared: 추세선에 수식 또는 R 제곱을 사용할지 여부를 지정합니다.

forward 및 backward\: 앞으로 또는 뒤로를 사용하여 데이터를 투영합니다.

displayEquation, displayRSquared, forward, backward는 선형, 지수, 로그, 다항식, 거듭제곱(power) 추세선을 지원합니다.

style: 색, 너비 및 파선을 포함한 추세선의 선 스타일을 지정합니다.

name: 추세선의 이름을 지정합니다. 이름을 지정하지 않으면 기본 제공 이름이 사용됩니다.

    var series = chart.series().get(0);
    series.trendlines = [
        {
            type: GC.Spread.Sheets.Charts.TrendlineType.polynomial,
            order: 4,
            intercept: 0,
            displayEquation: true,
            displayRSquared: true,
            forward: 3,
            name: "Customized Polynomial Trendline",
            style: {
                color: 'red',
                width: 2,
                dashStyle: GC.Spread.Sheets.Charts.LineDashStyle.dash
            }
        }
    ];
    chart.series().set(0, series);

Period: 이동 평균 추세선의 기간을 지정합니다. 순서는 2~(데이터 집합 수 - 1) 범위의 정수입니다.

    var series = chart.series().get(0);
    series.trendlines = [
        {
            type: GC.Spread.Sheets.Charts.TrendlineType.movingAverage,
            Period: 3
        }
    ];
    chart.series().set(0, series);
추세선은 특정 데이터 계열에서 기울기(또는 추세)를 나타내는 추가적인 선이며 최적 맞춤 선이라고도 합니다. 추세선은 현재 데이터를 기반으로 미래 값을 예측할 수 있으므로 데이터를 분석할 때 유용할 수 있습니다. 사용자는 선형, 지수, 로그, 다항식, 거듭제곱(power) 및 이동 평균을 포함한 6가지 유형의 추세선을 만들 수 있습니다. 선형\: 간단한 선형 데이터 집합에 대한 최적 맞춤 직선입니다. 지수\: 데이터 값이 증가하거나 감소한 후 평준화되는 방법을 보여 주는 최적 맞춤 곡선입니다. 로그\: 데이터 값이 증가하거나 감소한 후 평준화됨을 보여 주는 최적 맞춤 곡선입니다. 다항식\: order 속성에 따른 데이터 값의 변동을 보여 주는 곡선입니다. 거듭제곱(Power)\: 특정 비율로 증가하는 측정값을 비교하기 위한 곡선입니다. 이동 평균\: 특정 개수 데이터 요소의 평균을 계산하고 해당 값을 선의 지점으로 사용합니다. 추세선은 다음 차트 유형을 지원합니다. * 세로 막대형 * 막대형 * 꺾은선형 * 분산형 * 영역형 다음 코드를 사용하여 선형 추세선을 만들 수 있습니다. 사용자 정의 order: 다항식의 조건 수를 지정합니다. 순서는 2~6 범위의 정수입니다. intercept: 선형, 지수, 다항식 추세선의 절편을 지정합니다. displayEquation 및 displayRSquared: 추세선에 수식 또는 R 제곱을 사용할지 여부를 지정합니다. forward 및 backward\: 앞으로 또는 뒤로를 사용하여 데이터를 투영합니다. displayEquation, displayRSquared, forward, backward는 선형, 지수, 로그, 다항식, 거듭제곱(power) 추세선을 지원합니다. style: 색, 너비 및 파선을 포함한 추세선의 선 스타일을 지정합니다. name: 추세선의 이름을 지정합니다. 이름을 지정하지 않으면 기본 제공 이름이 사용됩니다. Period: 이동 평균 추세선의 기간을 지정합니다. 순서는 2~(데이터 집합 수 - 1) 범위의 정수입니다.
var advData = [ ['Advertising', 'Items sold'], [28, 17], [34, 19], [41, 18], [47, 20], [52, 24], [59, 26], [65, 29], [72, 31], [80, 34], [87, 39], [94, 40], [102, 42], ]; var salesData = [ ['', 'Sales'], ['Jan', 54], ['Feb', 60], ['Mar', 86], ['Apr', 92], ['May', 112], ['Jun', 157], ['Jul', 202], ['Aug', 195], ['Sep', 187], ['Oct', 194], ['Nov', 238], ['Dec', 289], ]; window.onload = function () { var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 2 }); initSheet1(spread); initSheet2(spread); }; function initSheet1(spread) { var sheet1 = spread.getSheet(0); sheet1.name('Basic'); sheet1.setArray(0, 0, advData); sheet1.setArray(18, 0, salesData); for (var i = 0; i < 12; i ++) { sheet1.getCell(i + 1, 0).formatter('$#,##0'); } // Choose a suitable trendline type from GC.Spread.Sheets.Charts.TrendlineType to fit your chart var chart1 = sheet1.charts.add("chart1", GC.Spread.Sheets.Charts.ChartType.xyScatter, 130, 5, 500, 350, "A1:B13", GC.Spread.Sheets.Charts.RowCol.columns); var axes = chart1.axes(); axes.primaryValue.title.text = 'Items sold'; axes.primaryCategory.title.text = 'Advertising'; axes.primaryCategory.majorGridLine.visible = true; axes.primaryCategory.majorUnit = 10; chart1.axes(axes); var targetSeriesIndex = 0; var targetSeries = chart1.series().get(targetSeriesIndex); var linearTrendline = { type: GC.Spread.Sheets.Charts.TrendlineType.linear, style: { color: 'red', width: 2 } }; targetSeries.trendlines = [ linearTrendline ]; chart1.series().set(targetSeriesIndex, targetSeries); var chart2 = sheet1.charts.add("chart2", GC.Spread.Sheets.Charts.ChartType.columnClustered, 130, 360, 500, 350, "A19:B31", GC.Spread.Sheets.Charts.RowCol.columns); var targetSeriesIndex = 0; var targetSeries = chart2.series().get(targetSeriesIndex); var exponentialTrendline = { type: GC.Spread.Sheets.Charts.TrendlineType.exponential, style: { color: 'orange', width: 2, dashStyle: GC.Spread.Sheets.Charts.LineDashStyle.dash } }; targetSeries.trendlines = [ exponentialTrendline ]; chart2.series().set(targetSeriesIndex, targetSeries); } function initSheet2(spread) { // More settings var sheet2 = spread.getSheet(1); sheet2.name('Advance'); sheet2.setArray(0, 0, advData); sheet2.setArray(18, 0, salesData); for (var i = 0; i < 12; i ++) { sheet2.getCell(i + 1, 0).formatter('$#,##0'); } // Change the order(the highest power for the independent variable) of polynomial trendline to adjust R-squared value // Also you could show the equation and R-squared value in chart area if you want var chart3 = sheet2.charts.add("chart3", GC.Spread.Sheets.Charts.ChartType.xyScatter, 130, 5, 500, 350, "A1:B13", GC.Spread.Sheets.Charts.RowCol.columns); var axes = chart3.axes(); axes.primaryValue.title.text = 'Items sold'; axes.primaryCategory.title.text = 'Advertising'; axes.primaryCategory.majorGridLine.visible = true; axes.primaryCategory.majorUnit = 10; chart3.axes(axes); var targetSeriesIndex = 0; var targetSeries = chart3.series().get(targetSeriesIndex); var polynomialTrendline = { type: GC.Spread.Sheets.Charts.TrendlineType.polynomial, order: 4, displayEquation: true, displayRSquared: true, style: { color: 'red', width: 2 } }; targetSeries.trendlines = [ polynomialTrendline ]; chart3.series().set(targetSeriesIndex, targetSeries); // Set a value in the Forward and Backward fields to project your data into the future. var chart4 = sheet2.charts.add("chart4", GC.Spread.Sheets.Charts.ChartType.columnClustered, 130, 360, 500, 350, "A19:B31", GC.Spread.Sheets.Charts.RowCol.columns); var targetSeriesIndex = 0; var targetSeries = chart4.series().get(targetSeriesIndex); var exponentialTrendline = { type: GC.Spread.Sheets.Charts.TrendlineType.exponential, forward: 3, style: { color: 'orange', width: 2, dashStyle: GC.Spread.Sheets.Charts.LineDashStyle.dash } }; targetSeries.trendlines = [ exponentialTrendline ]; chart4.series().set(targetSeriesIndex, targetSeries); }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta name="spreadjs culture" content="ko-kr"/> <meta charset="utf-8" /> <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"> <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-shapes/dist/gc.spread.sheets.shapes.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-charts/dist/gc.spread.sheets.charts.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 src="app.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="sample-tutorial"> <div class="sample-tutorial"> <div id="ss" class="sample-spreadsheets"></div> </div> </div> </body> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } .sample-spreadsheets { width: 100% ; height: 100%; overflow: hidden; float: left; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }