Advertisement
  1. Code
  2. JavaScript

Chart.js로 시작하기: 척도

Scroll to top
Read Time: 6 min
This post is part of a series called Getting Started With Chart.js.
Getting Started With Chart.js: Pie, Doughnut, and Bubble Charts

() translation by (you can also view the original English article)

여러분은 지난 4개의 튜토리얼에서 Chart.js에 관하여 꽤 많이 배웠습니다. 첫 4개의 튜토리얼을 본 후, 이젠 툴팁과 레이블을 원하는 대로 바꾸고, 서체를 변경하며, 다른 종류의 차트를 생성할 수 있어야 합니다. 이 튜토리얼 시리즈에서 아직까지 다루지 않은 Chart.js의 한 측면은 척도(scales)입니다.

척도는 라이브러리 버전 1.0 이후로 상당히 변해왔고 현재 매우 강력합니다. 여러분은 이 튜토리얼에서 척도를 조작해보고, 라이브러리에서 제공하는 여러 가지 옵션을 이용해 겉모습을 제어하는 방법을 학습할 것입니다.

그리드 선 바꾸기

그리드 선 관련 설정 옵션들은 모두 gridLines 키에 속한 척도 옵션 아래 중첩되어 있습니다. 이 키는 축(axes)에 수직으로 그어지는 그리드 선을 커스터마이징하는 옵션을 정의합니다. 여러분이 선 도표(line chart)와 막대 그래프 튜토리얼에서 만들었던 선 도표에서 그리드 선을 바꿔봅시다.

display 키를 써서 차트의 그리드 선을 보이거나 숨길 수 있습니다. 초기 설정값이 true라서 기본적으로 그리드 선이 보입니다. 그리드 선의 색상은 color 키를 사용해 명시해 줍니다. 만약 그리드 선이 실선이 아닌 대시 기호이길 바란다면, 그 길이와 간격 값을 borderDash 킷값으로 제공하면 됩니다. 여러분은  zeroLineWidthzeroLineColor 키를 개별로 사용해 1번째나 0번째 인덱스에 선 너비와 색상을 설정할 수 있습니다.

이제껏 봤던 모든 차트의 척도에서는 보는 이들이 특정 축이 무엇을 표현하는지 알게 해주는 설명 텍스트가 없었습니다. 이렇게 하면 차트는 도움이 되지 못합니다. 예를 들어 여러분이 자동차 속도에 관한 도표를 보고 y축에 표시된 속도 단위를 모른다면, 그 차트는 유용하지 않겠지요.

여러분은 display 키를 써서 차트에서 척도 레이블을 보이거나 숨길 수 있습니다. 척도 레이블은 기본적으로 보이지 않습니다. 여기 척도에서 보여줄 텍스트는 labelString 키에서 명시해 줍니다. 또한, 글꼴 색상과 글꼴 집합, 크기와 스타일은 각각 fontColor, fontFamily, fontSize, fontStyle을 이용해 제어할 수 있습니다.

다음은 위와 동일한 중고차 속도 차트로 다른 차트 옵션을 지정했습니다.

1
var chartOptions = {
2
  legend: {
3
    display: true,
4
    position: 'top',
5
    labels: {
6
      boxWidth: 80,
7
      fontColor: 'black'
8
    }
9
  },
10
  scales: {
11
    xAxes: [{
12
      gridLines: {
13
        display: false,
14
        color: "black"
15
      },
16
      scaleLabel: {
17
        display: true,
18
        labelString: "Time in Seconds",
19
        fontColor: "red"
20
      }
21
    }],
22
    yAxes: [{
23
      gridLines: {
24
        color: "black",
25
        borderDash: [2, 5],
26
      },
27
      scaleLabel: {
28
        display: true,
29
        labelString: "Speed in Miles per Hour",
30
        fontColor: "green"
31
      }
32
    }]
33
  }
34
};

offsetGridLines로 부르는 키가 하나 더 있습니다. 값을 true로 설정했을 때에는 레이블이 그리드 선의 가운데로 이동합니다. 이는 대게 막대 그래프를 제작할 때 유용합니다. 

선형 척도 설정하기

선형 척도는 수치화된 데이터를 차트로 만드는 데 사용됩니다. 이러한 척도는 x나 y축 중 하나에서 생성됩니다. 대부분의 경우에 Chart.js는 자동으로 척도의 최소 및 최댓값을 감지합니다. 그렇더라도 어느 정도 애매모호함을 낳을 수 있습니다.

여러분이 학급에 있는 학생 성적을 도표로 만들고 싶다고 가정해 봅시다. 만약에 테스트 최고점은 200이었지만 180점 이상 점수를 받은 학생이 없었다면, 척도는 거의 180에서 최고에 달할 것입니다. 그런 경우에 차트를 보는 이들은 최고점이 180인지 200인지 알 길이 없겠지요.

Chart.js에는 척도에 관해 다양한 키를 제어하는 다수의 내장 옵션이 있습니다. minmax 키로 척도의 최소와 최댓값을 명시할 수 있습니다. 척도의 간격 크기는 stepSize 속성에서 제어됩니다. 이런 식으로 차트에 얼마나 많은 그리드 선이 있어야 하는지 결정하면 됩니다. 그리드 선과 점의 개수에 대해 한계를 설정하는 또 다른 방법은 maxTicksLimit 키를 사용하는 것입니다.

이 시리즈 중 이전 튜토리얼에 관한 막대 그래프에서 수평 눈금의 최소 및 최대 척도를 명시하는 코드는 다음과 같습니다.

1
var chartOptions = {
2
  scales: {
3
    yAxes: [{
4
      barPercentage: 0.5,
5
      gridLines: {
6
        display: false
7
      }
8
    }],
9
    xAxes: [{
10
      gridLines: {
11
        zeroLineColor: "black",
12
        zeroLineWidth: 2
13
      },
14
      ticks: {
15
        min: 0,
16
        max: 6500,
17
        stepSize: 1300
18
      },
19
      scaleLabel: {
20
        display: true,
21
        labelString: "Density in kg/m3"
22
      }
23
    }]
24
  },
25
  elements: {
26
    rectangle: {
27
      borderSkipped: 'left',
28
    }
29
  }
30
};

마치 선형 척도처럼 여러분은 차트에서 값을 표시하기 위해 대수 척도(logarithmic scales)를 제작할 수 있습니다. 이 경우에 대수 보간(logarithmic interpolation)은 축에서 점의 위치를 정하는 데 사용됩니다. 또한, 이런 척도는 x축과 y축 모두에 놓이기도 합니다.

방사형 선형 척도 설정하기

이런 종류의 척도는 레이더와 극지방(polar area) 차트 용도로 쓰입니다. 일반적인 선형 척도와 달리 이 척도는 축으로 위치가 정해지는 대신 차트 영역을 덮어씌웁니다.

방사형 척도에서 구체적으로 표시하는 키가 많이 있습니다. 예를 들어 그리드 선이 원형이나 직선이어야 하는지를 명시하는 데에는 lineArc를 사용하면 됩니다. 방사형 차트에서의 기본값은 false이며 극지방 차트에서는 true입니다.

angleLines 키를 사용해 차트 중심으로부터 점 레이블까지 퍼지는 선의 외관을 제어할 수 있습니다. 객체를 값으로 받습니다. 객체는 각도를 만드는 선(angle lines)의 색상과 너비를 제어하는 키를 가질 수 있습니다. display 킷값을 false로 설정해서 각도 선을 숨겨도 됩니다. 각도 선의 색상과 너비는 colorlineWidth 키를 사용해 제어가 가능합니다.

점 레이블 모양은 pointLabels 키를 이용해 제어 가능합니다. 그저 앵글 라인처럼 이 키도 객체를 값으로 받습니다. 이 옵션은 lineArc 값이 false로 설정될 때만 효과가 있다는 것을 기억하세요. 글꼴 색상, 글꼴 집합, 크기, 스타일은 fontColor, fontFamily, fontSize, fontStyle 키를 이용해 명시하게 됩니다.

min과 max 키로 최소와 최대 크기를 설정할 수 있습니다. 크기에 관한 단계 크기(step size)와 눈금의 최대 수는 stepSizemaxTicksLimit 키를 사용해 명시하면 됩니다. 이러한 옵션은 ticks 키 하위에서 이용할 수 있습니다. ticks 안에서 이용할 수 있는 다른 몇 가지 키는 showLabelBackdrop, backdropColor, backdropPaddingX, backDropPaddingY가 있습니다. 여러분은 이 옵션들을 tick 레이블 아래 있는 배경을 보이거나 숨기며, 너비와 높이, 색상을 제어할 수 있습니다.

또한, 그리드 선의 색상과 너비를 설정하도록 막대 그래프에서 사용했던 gridLines를 방사형 차트에서도 쓸 수 있습니다. 원하는 대로 변경한 척도가 있는 방사형 차트를 제작하는 옵션은 다음과 같습니다.

1
var chartOptions = {
2
  scale: {
3
    gridLines: {
4
      color: "black",
5
      lineWidth: 3
6
    },
7
    angleLines: {
8
      display: false
9
    },
10
    ticks: {
11
      beginAtZero: true,
12
      min: 0,
13
      max: 100,
14
      stepSize: 20
15
    },
16
    pointLabels: {
17
      fontSize: 18,
18
      fontColor: "green"
19
    }
20
  },
21
  legend: {
22
    position: 'left'
23
  }
24
};

시간 척도 설정하기

차트에서 시간과 날짜를 보여주기 위해 시간 척도를 사용할 수 있습니다. Chart.js 튜토리얼의 서론에서 얘기했듯이 여러분의 프로젝트에서 시간을 보여주기 위해서는 Moment.js를 포함해야 합니다. 시간 척도를 사용하는 데 생기는 한 가지 제한 사항은 x축으로만 보일 수 있다는 것입니다. 시간 척도와 관련한 설정과 옵션은 모두 time 하위 옵션 아래에 있습니다.

시간 척도를 생성하기 위해서는 type 킷값을 xAxes 하위 옵션 아래에 있는 time으로 설정해야 합니다. 그런 다음에 time 아래에서 킷값을 다양하게 설정하면 됩니다. 눈금을 그리는 데 사용되는 단위는 unit 키에서 설정하세요.

단위 간격은 unitStepSize 키에서 명시할 수 있습니다. 눈금 레이블이 보여지는 형식은 displayFormats 하위 옵션을 통해 명시됩니다. 적용 가능한 문자 형식에 대한 내용은 Moment.js 웹사이트에서 읽을 수 있습니다.

시간이 툴팁에서 보이는 형식은 tooltipFormat 키를 이용해 명시합니다.

round 키를 통해 차트에서 시간을 표시하기 전에 시간은 완성할 수 있습니다. round 값을 설정할 때 조심하세요. 값을 hour로 설정한다고 가정하면, 차트에 표시할 시간은 두 가지가 있습니다. 한 가지 시간이 5:30 AM이고 다른 하나가 5:50 AM이라면 둘 다 5:00 AM 눈금 표시에 보여야 할 것입니다. minute로 값을 설정하면 각각 5:30과 5:50 표시에 보여야 하겠지요.

튜토리얼 시작 부분에서 짜인 선형 차트는 다음의 코드와 함께 시간 척도를 사용해 표시될 수 있습니다.

1
var chartOptions = {
2
  legend: {
3
    display: true,
4
    position: 'top',
5
    labels: {
6
      boxWidth: 80,
7
      fontColor: 'black'
8
    }
9
  },
10
  scales: {
11
    xAxes: [{
12
      type: "time",
13
      time: {
14
        unit: 'hour',
15
        unitStepSize: 0.5,
16
        round: 'hour',
17
        tooltipFormat: "h:mm:ss a",
18
        displayFormats: {
19
          hour: 'MMM D, h:mm A'
20
        }
21
      }
22
    }],
23
    yAxes: [{
24
      gridLines: {
25
        color: "black",
26
        borderDash: [2, 5],
27
      },
28
      scaleLabel: {
29
        display: true,
30
        labelString: "Speed in Miles per Hour",
31
        fontColor: "green"
32
      }
33
    }]
34
  }
35
};

결론

이 튜토리얼에서 여러분은 Chart.js에서 여러 종류의 척도에 대해 학습했습니다. 이제는 색상과 최소 및 최댓값, 눈금 개수, 그 외 요인들을 제어함으로써 차트에서 척도를 원하는 대로 쉽게 변경할 수 있겠지요.

이 시리즈에 있는 다섯 개의 튜토리얼을 읽고 나서는 Chart.js에서 이용 가능한 온갖 종류의 차트를 제작할 수 있을 것입니다. 여러분이 이 튜토리얼과 시리즈를 맘에 들어 하셨으면 좋겠네요.

업무상 연구하거나 사용하려고 리소스를 추가로 찾고 있다면 Envato marketplace에서 이용할 수 있는 리소스를 확인해 보세요. 질문이 있다면 아래 댓글에 작성해 주시길 바랍니다. 여러분 프로젝트에서 이 라이브러리를 적용해 본 적이 있나요? 이 또한 아래 댓글에서 정보를 공유해 주세요.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.