https://bookstore-search-wneg.vercel.app/
Vite + React + TS
bookstore-search-wneg.vercel.app
경기도 데이터 OpenAPI 연동 글 보러가기:
https://tuesday04.tistory.com/91
경기데이터드림- 경기도 지역서점 데이터 OpenAPI 연동기
📚 경기도 지역서점 인증제 OpenAPI 연동기 내 지역에서 포인트를 쓸 수 있는 서점 찾기:https://bookstore-search.vercel.app/ Vite + React + TS bookstore-search.vercel.app 코드 바로 보기:https://github.com/veryyounng/booksto
tuesday04.tistory.com
1. 왜 Bar Chart인가?
경기도 인증 지역서점 데이터를 보면 각 서점에 SIGUN_NM(시·군 이름) 필드가 있습니다.
이를 이용해 지역별 서점 개수를 집계하면, “우리 동네엔 몇 개나 있지?”라는 질문을 한눈에 확인할 수 있습니다.
그래서 시각화 방식으로는 Bar Chart가 가장 적합했습니다.
- X축: 지역명
- Y축: 해당 지역의 인증 서점 수
2. 데이터 집계
React의 useMemo를 사용해 전체 데이터(allData)에서 지역별 서점 수를 집계했습니다.
const regionStats = useMemo(() => {
const counts: Record<string, number> = {};
allData.forEach((item) => {
if (item.SIGUN_NM) {
counts[item.SIGUN_NM] = (counts[item.SIGUN_NM] || 0) + 1;
}
});
return Object.entries(counts).map(([region, count]) => ({
region,
count,
}));
}, [allData]);
👉 이렇게 하면 [ { region: "수원시", count: 42 }, { region: "용인시", count: 30 }, ... ] 형태의 데이터가 생성됩니다.
3. Bar Chart 구현 (Recharts)
라이브러리는 Recharts를 사용했습니다.
ResponsiveContainer를 감싸주면 화면 크기에 맞춰 자동으로 크기가 조정됩니다.
import {
BarChart, Bar, XAxis, YAxis,
CartesianGrid, Tooltip, ResponsiveContainer
} from "recharts";
<ResponsiveContainer width="100%" height={400}>
<BarChart data={regionStats}>
<CartesianGrid strokeDasharray="3 3" />
<XAxis dataKey="region" />
<YAxis />
<Tooltip />
<Bar dataKey="count" fill="#3b82f6" />
</BarChart>
</ResponsiveContainer>
4. 결과
이제 단순 리스트가 아니라,
- 어떤 지역에 서점이 몰려 있는지
- 어떤 지역은 상대적으로 적은지
한눈에 파악할 수 있는 분포 그래프가 완성됐습니다.

'개발로 사고하기' 카테고리의 다른 글
| 😤 CORS? 403? API 호출 대참사 해결기 (0) | 2025.09.11 |
|---|---|
| 🚨 Spring Boot Kafka 개발 중 “No qualifying bean” 에러 해결기 (0) | 2025.09.07 |
| 경기데이터드림- 경기도 지역서점 데이터 OpenAPI 연동기 (3) | 2025.08.25 |
| 🦖 미니 공룡 게임으로 배우는 방향 벡터 완성 (3) | 2025.08.19 |
| 미니 공룡 게임에 방향 전환 기능 추가 (0) | 2025.08.19 |