개발이야기/자바스크립트

[자바스크립트] C3.js chart 사용법, 예제, 차트 그리기 (막대, 선, 원, 도넛, 파이 그래프)

후린개발자 2023. 10. 27.
반응형

아래 소스코드는 C3.js 라이브러리를 사용해서 차트를 그려 보았습니다. C3.js 차트는 직관적인 API를 통해 쉽게 사용 가능하며, 다양한 차트 유형을 제공하고 오픈 소스로 무료로 사용할 수 있습니다.

 

C3.js를 사용하기 위해서는 세 개의 CDN 링크를 HTML 페이지에 추가해야 합니다.
C3.js 라이브러리, C3.js 스타일시트, 마지막으로 C3.js를 사용하려면 D3.js도 함께 로드해야 합니다.

 

 

예제 차트

<!DOCTYPE html>
<html>
<head>
    <!-- Stylesheet -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.11/c3.min.css"/>
</head>
<body>
    <h2>막대 그래프</h2>
    <div id="bar-chart"></div>

    <h2>선 그래프</h2>
    <div id="line-chart"></div>

    <h2>원 그래프</h2>
    <div id="pie-chart"></div>

    <h2>영역 그래프</h2>
    <div id="area-chart"></div>

    <h2>가로 막대 그래프</h2>
    <div id="horizontal-bar-chart"></div>

    <h2>산포 그래프</h2>
    <div id="scatter-plot"></div>

    <h2>도넛 그래프</h2>
    <div id="donut-chart"></div>

	<h2>누적 막대 그래프</h2>
    <div id="stacked-bar-chart"></div>

    <h2>스텝 차트</h2>
    <div id="step-chart"></div>

    <h2>분산 스플라인 그래프</h2>
    <div id="spline-chart"></div>

    <h2>파이 차트</h2>
    <div id="pie-chart-2"></div>

    <!-- JavaScript -->
    <script src="https://d3js.org/d3.v3.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.11/c3.min.js"></script>
    <script>
        // 데이터
        var barChartData = {
            columns: [
                ['data1', 30, 200, 100, 400, 150, 250]
            ],
            type: 'bar'
        };

        var lineChartData = {
            columns: [
                ['data1', 30, 200, 100, 400, 150, 250]
            ],
            type: 'line'
        };

        var pieChartData = {
            columns: [
                ['data1', 30],
                ['data2', 70]
            ],
            type: 'pie'
        };

        var areaChartData = {
            columns: [
                ['data1', 30, 200, 100, 400, 150, 250]
            ],
            type: 'area'
        };

        var horizontalBarChartData = {
            columns: [
                ['data1', -30, -200, -100, -400, -150, -250]
            ],
            type: 'bar'
        };

        var scatterPlotData = {
            x: 'x',
            columns: [
                ['x', 10, 20, 30, 40, 50, 60],
                ['data1', 30, 200, 100, 400, 150, 250]
            ],
            type: 'scatter'
        };

        var donutChartData = {
            columns: [
                ['data1', 30],
                ['data2', 70]
            ],
            type: 'donut'
        };

        // 차트 생성
        var barChart = c3.generate({
            bindto: '#bar-chart',
            data: barChartData
        });

        var lineChart = c3.generate({
            bindto: '#line-chart',
            data: lineChartData
        });

        var pieChart = c3.generate({
            bindto: '#pie-chart',
            data: pieChartData
        });

        var areaChart = c3.generate({
            bindto: '#area-chart',
            data: areaChartData
        });

        var horizontalBarChart = c3.generate({
            bindto: '#horizontal-bar-chart',
            data: horizontalBarChartData
        });

        var scatterPlot = c3.generate({
            bindto: '#scatter-plot',
            data: scatterPlotData
        });

        var donutChart = c3.generate({
            bindto: '#donut-chart',
            data: donutChartData
        });

		// 누적 막대 그래프
        var stackedBarChartData = {
            columns: [
                ['data1', 30, 200, 100, 400, 150, 250],
                ['data2', 50, 20, 10, 40, 15, 25]
            ],
            type: 'bar',
            groups: [['data1', 'data2']]
        };

        var stackedBarChart = c3.generate({
            bindto: '#stacked-bar-chart',
            data: stackedBarChartData
        });

        // 스텝 차트
        var stepChartData = {
            columns: [
                ['data1', 30, 200, 100, 400, 150, 250]
            ],
            type: 'step'
        };

        var stepChart = c3.generate({
            bindto: '#step-chart',
            data: stepChartData
        });

        // 분산 스플라인 그래프
        var splineChartData = {
            columns: [
                ['data1', 30, 200, 100, 400, 150, 250]
            ],
            type: 'spline'
        };

        var splineChart = c3.generate({
            bindto: '#spline-chart',
            data: splineChartData
        });

        // 파이 차트
        var pieChart2Data = {
            columns: [
                ['data1', 30],
                ['data2', 70]
            ],
            type: 'pie'
        };

        var pieChart2 = c3.generate({
            bindto: '#pie-chart-2',
            data: pieChart2Data
        });
    </script>
</body>
</html>

 

C3 차트는 스크립트에서 각 차트에 대한 데이터 정의와 차트 생성을 수행하고 있습니다.

 

1. 데이터 설정

-barChartData, lineChartData, pieChartData, areaChartData, horizontalBarChartData, scatterPlotData, donutChartData, stackedBarChartData, stepChartData, splineChartData, pieChart2Data 등의 변수들은 각각의 차트에 표시할 데이터를 정의합니다.

-columns 속성은 차트에 나타낼 데이터를 나타내며, type은 차트 유형을 지정합니다. 데이터는 각각의 차트 유형에 따라 형식화되어 있습니다.

2. 차트 생성

-c3.generate 함수를 사용하여 데이터와 차트를 결합하여 각 차트를 생성하고 화면에 표시합니다.

-예를 들어, var barChart = c3.generate({ ... });는 barChartData를 사용하여 막대그래프를 생성하고 bar-chart라는 ID를 가진 <div>에 바인딩합니다.

-이러한 과정은 다른 차트에 대해서도 반복되며, 각 차트는 고유한 ID에 바인딩됩니다.

 

 


 

반응형

댓글

💲 추천 글