react-chartjs-2 레이더 차트 구현
date
Jun 15, 2025
slug
radar-react-chartjs-user-type
author
status
Public
tags
React
Friend Community
summary
부천FC FRIEND COMMUNITY 프로젝트에서 사용자 성향 데이터를 시각화하기 위해
react-chartjs-2를 활용해 레이더 차트를 구현한 경험을 소개합니다. Chart.js를 기반으로 한 커스터마이징, UX 고려사항, 코드 설계까지 자세히 분석합니다.type
Post
thumbnail
category
💻 Frontend
updatedAt
Jun 23, 2025 05:28 PM
부천FC FRIEND_COMMUNITY는 사용자 성향에 맞는 콘텐츠와 피드를 제공하는 웹 서비스로, “내가 어떤 유형의 팬인지”를 시각적으로 보여주는 기능이 핵심 중 하나였습니다.
처음에는 간단한 텍스트 나열만으로 표현하려 했지만, 성향 간의 비율이나 균형을 사용자에게 직관적으로 전달하기엔 부족했습니다.
그래서 선택한 시각화 방식이 레이더 차트(Radar Chart) 였고, 이를 React에서 구현하기 위해
react-chartjs-2와 Chart.js를 도입했습니다.구현 목표
- 사용자 유형(예: 열정형, 인싸형, 먹방형 등)의 점수를 기반으로 한눈에 시각화
- 불필요한 정보는 제거하고 중요한 정보에만 집중된 형태
사용 스택
- React: UI 프레임워크
- react-chartjs-2: Chart.js의 React 래퍼 라이브러리
- Chart.js: 시각화 라이브러리
구현 구조
import { Radar } from "react-chartjs-2"; import { Chart as ChartJS, RadialLinearScale, PointElement, LineElement, Filler, Tooltip, Legend, } from "chart.js"; ChartJS.register( RadialLinearScale, PointElement, LineElement, Filler, Tooltip, Legend ); const RadarChart = ({ data }) => { const chartData = { labels: ["열정형", "집중형", "축알못형", "축잘알형", "먹방형", "인싸형"], datasets: [ { label: "User Stats", data: data, backgroundColor: "rgba(204, 0, 0, 1)", borderColor: "rgba(0, 0, 0, 1)", borderWidth: 1, pointRadius: 0, pointHoverRadius: 0, z: 1, }, ], }; const options = { scales: { r: { beginAtZero: true, ticks: { display: false, }, grid: { color: "rgba(0, 0, 0, 0.1)", z: 2, }, angleLines: { color: "rgba(0, 0, 0, 0.1)", z: 2, }, }, }, plugins: { legend: { display: false, }, }, }; return <Radar data={chartData} options={options} />; }; export default RadarChart;
코드 해설
1. Chart.js 구성 요소 등록
ChartJS.register(...);
Chart.js는 레이더 차트 구현 시
RadialLinearScale, LineElement 등 여러 요소를 명시적으로 등록해야 동작합니다. 이를 통해 내부적으로 그래픽 처리 및 scale 계산이 가능해집니다.2. 데이터 구성 방식
labels: ["열정형", "집중형", ...] data: [4, 3, 1, 5, 2, 4]
labels는 각 축의 명칭이며, 사용자 성향 카테고리입니다.
data는 props로 전달받수 배열입니다. 사용자마다 동적으로 변하도록 처리합니다.
3. 시각적 최적화
pointRadius: 0, pointHoverRadius: 0 ticks: { display: false }
- 레이더 점을 최소화하여 데이터 시인성만 유지
- 점수 눈금(ticks)은 제거하여 디자인 간결화
4. UX 최적화 포인트
- 범례 숨김 처리로 군더더기 제거
- 모바일 환경에서도 쉽게 읽히는 중심 레이아웃 유지
- 사용자 성향 데이터는 API 호출을 통해 전달되고, 해당 컴포넌트에서만 재사용 가능하게 구조화
실제 적용 결과 및 실제 이미지
- 사용자 성향 분포를 처음 본 사람도 쉽게 해석할 수 있다는 피드백
- 타입별 통계 확인 시 차트 형태만으로도 개인의 특성이 드러나 시각적 만족도 증가
- 전체 UI 내에서도 부담 없는 시각화 요소로 자리잡음

회고
처음에는 단순히 “차트를 붙이자”는 목표였지만, 실제 서비스에 적용하면서 디자인과 UX, 데이터 구조, 상태관리까지 고려해야 하는 복합적인 작업이었습니다.
특히
react-chartjs-2는 간단한 데이터 기반 차트 구성엔 효과적이지만,- 스타일 세부 조정
- 축 단위 계산 제어
- 반응형 처리 시 문제점 등은 직접 해결해야 했습니다.
하지만 최종적으로는 만족스러운 결과를 얻었고, 향후에도 간단한 사용자 유형 시각화, 비교 뷰 등 다양한 곳에 재사용 가능한 구조가 되었습니다.
마무리
레이더 차트는 단순한 데이터 나열을 넘어서 사용자에게 스스로를 이해할 수 있는 시각적 도구로 작용할 수 있습니다.
부천FC 커뮤니티처럼 유저 참여형 웹 서비스에서는 이런 시각화가 UX에 큰 차이를 만들어낸다고 느꼈고,
앞으로도 다양한 형태의 사용자 피드백 기반 시각화 기능을 기획하고 구현해볼 계획입니다.