HeatmapChart Sample

데이터

서울특별시 온도별 데이터를 활용합니다.

https://www.weather.go.kr/w/obs-climate/land/past-obs/obs-by-element.do (opens in a new tab)

RealChart 0.9.19

차트의 의도

서울 특별시 최저 & 최고 온도를 년도별로 변화점을 보여주기 위해 막대 영역 차트를 활용해보았습니다.

막대 영역차트를 마스터 데이터, 히트맵 차트를 디테일 데이터 형태로 표현하였습니다.

막대 영역 차트의 각 시리즈 데이터 부분을 클릭하면 히트맵 차트에서 년도의 주차별 평균 온도에 대한 디테일 데이터를 확인할 수 있습니다.

막대 영역 차트

막대 영역 차트를 사용하면 최소값과 최대값의 범위를 동시에 표현하기 용이합니다.

막대 차트에서 onPointClick 이벤트를 활용해서 시리즈를 클릭하면 다른 차트에 클릭한 시리즈의 디테일 데이터가 반영되도록 설정했습니다.

const waterfallConfig = {
        title: "서울 년도별 최저 & 최고 온도",
        options: {},
        "xAxis": {},
        "yAxis": {},
        "series": {
            onPointClick: (args) => {
                // args 인자를 통해 시리즈 데이터를 활용 가능
                // 다른 차트 세팅 로직 작성
            },
            "type": "barrange",
            "data": [
                [-17.8, 34.1],
                [-17.1, 36.7],
                [-16.4, 33.9],
                [-13.2, 35.8],
                [-13, 36],
                [-18, 36.6],
                [-12.6, 35.4],
                [-17.8, 39.6],
                [-10.9, 36.8],
                [-12.9, 35.4],
                [-18.6, 36.5],
                [-13.7, 36.1],
            ]
        }
    }
 
const chart = RealChart.createChart(document, 'realchart', waterfallConfig);

히트맵 차트

히트맵 차트는 어떤 패턴과 변화를 표현하기에 용이한 차트입니다.

이번 예제에서는 주차별로 서울시 평균온도의 변화를 표현해보았습니다.

히트맵 차트 설정

히트맵 차트를 활용할 때 특정 데이터 범위마다 원하는 색상을 설정할 수 있습니다.

아래는 데이터는 성장률이 0% 아래인 부분은 빨간색으로 표시되도록 설정하였습니다.

export const heatmapConfig = {
    name: "heatmap",
    credits: {
        visible: false
    },
    xAxis: {
        categories: [
            "A기업", "B기업", "C기업", "D기업"
        ],
        grid: true,
    },
    yAxis: {
        title: '년도별 성장률',
        categories: ["2017년", "2018년", "2019년", "2020년", "2021년", "2022년"],
        grid: true
    },
    series: {
        pointLabel: true,
        tooltip: {
            text: '성장률:<b> ${yValue}%</b>'
        },
        // 히트맵 차트는 데이터가 [x, y, z] 형태로 지정되기 때문에 값은 z 기준으로 설정합니다.
        viewRangeValue: 'z',
        // 값이 0까지는 빨강색으로 표기합니다.
        viewRanges: [
            {
                toValue: 0,
                color: 'red'
            }
        ],
        type: 'heatmap',
        data: [
            // [x시리즈 위치, y시리즈 위치, 값]
            [0, 0, 10], [1, 0, 5], [2, 0, 3], [3, 0, 20],
            [0, 1, 12], [1, 1, 10], [2, 1, 2], [3, 1, 5],
            [0, 2, 5], [1, 2, 22], [2, 2, -5], [3, 2, 20],
            [0, 3, 4], [1, 3, 24], [2, 3, 1], [3, 3, 44],
            [0, 4, 3], [1, 4, 26], [2, 4, 5], [3, 4, 59],
            [0, 5, 2], [1, 5, 30], [2, 5, -5], [3, 5, 45],
        ]
    }
}

히트맵 차트 적용 샘플

RealChart 0.9.19

Annotation

annotation 설정을 이용하면 차트의 특정위치에 이미지나 글자를 위치시킬 수 있습니다.

이번 예제에서는 아래 이미지를 오른쪽 위에 배치시켰습니다.

image

Annotation 설정 예제

const anntationConfig = {
    name: "bar",
    title: "annotation 적용 예제",
    body: {
        // Image, Text, Shape 등을 특정위치에 배치합니다.
        annotations: [{
            type: 'image',
            align: 'right',
            offsetX: -5,
            width: 300,
            imageUrl: '/images/colors.png',
        }],
    },
    xAxis: {
    },
    yAxis: {
    },
    series: {
        viewRangeValue: 'y',
        viewRanges: [
            {
                toValue: 2,
                color: '#339AF0'
            },
            {
                toValue: 4,
                color: '#FF922B'
            }
        ],
        pointLabel: true,
        type: 'bar',
        data: [
            [0, 1], [1, 1], [2, 3], [3, 3], [4, 4]
        ]
    }
}

Annotation 설정 샘플

RealChart 0.9.19