데이터 분석에서 시각화는 필수적인 과정입니다. 데이터를 그래프로 표현하면 트렌드 분석, 패턴 발견, 인사이트 도출이 훨씬 쉬워집니다. R 언어에서 가장 강력한 시각화 라이브러리는 바로 ggplot2입니다.
이번 글에서는 ggplot2를 활용한 데이터 시각화 기본 개념과 실전 예제를 소개하겠습니다.
1. ggplot2란?
ggplot2는 R의 가장 강력한 시각화 패키지로, 데이터를 직관적으로 표현하는 그래프를 만들 수 있는 라이브러리입니다.
ggplot2는 Grammar of Graphics(그래픽 문법) 개념을 기반으로 만들어졌으며, 레이어(layer) 개념을 사용하여 차트를 단계별로 구성할 수 있습니다.
✅ ggplot2의 주요 특징
- 다양한 그래프 유형(막대그래프, 선그래프, 산점도 등) 지원
- 간결한 코드로 고품질 시각화 가능
- 레이어 개념을 활용한 유연한 그래프 커스터마이징 가능
이제 ggplot2를 활용한 데이터 시각화를 직접 만들어보겠습니다.
2. ggplot2 기본 문법
ggplot2의 기본 구조는 다음과 같습니다.
r복사편집ggplot(데이터셋, aes(변수 설정)) +
기하학적 객체(geom_함수) +
테마 및 추가 요소
예제 데이터셋: mpg
(자동차 연비 데이터)
r복사편집library(ggplot2)
# 기본 산점도
ggplot(mpg, aes(x=displ, y=hwy)) +
geom_point()
✅ 결과: 엔진 배기량(displ
)과 고속도로 연비(hwy
)의 관계를 보여주는 산점도
3. 다양한 그래프 그리기
3-1. 막대그래프 (Bar Chart)
r복사편집ggplot(mpg, aes(x=class)) +
geom_bar(fill="skyblue") +
labs(title="자동차 종류별 개수")
✅ 결과: 자동차 종류별 개수를 나타내는 막대그래프
3-2. 선그래프 (Line Chart)
r복사편집ggplot(economics, aes(x=date, y=unemploy)) +
geom_line(color="blue") +
labs(title="실업률 추이", x="연도", y="실업자 수")
✅ 결과: 연도별 실업자 수 변화 추이를 나타내는 선그래프
3-3. 산점도 (Scatter Plot) – 그룹별 색상 추가
r복사편집ggplot(mpg, aes(x=displ, y=hwy, color=class)) +
geom_point(size=3) +
labs(title="자동차 배기량과 연비 관계")
✅ 결과: 자동차 종류별 색상을 추가하여 배기량과 연비 관계 시각화
3-4. 히스토그램 (Histogram)
r복사편집ggplot(mpg, aes(x=hwy)) +
geom_histogram(binwidth=2, fill="purple", color="white") +
labs(title="고속도로 연비 분포")
✅ 결과: 고속도로 연비의 분포를 보여주는 히스토그램
3-5. 상자그래프 (Boxplot)
r복사편집ggplot(mpg, aes(x=class, y=hwy, fill=class)) +
geom_boxplot() +
labs(title="자동차 종류별 연비 비교")
✅ 결과: 자동차 종류별 연비를 비교하는 상자그래프
4. ggplot2 커스터마이징
ggplot2는 다양한 옵션을 제공하여 그래프를 더욱 세련되게 만들 수 있습니다.
4-1. 그래프 테마 변경
r복사편집ggplot(mpg, aes(x=displ, y=hwy, color=class)) +
geom_point(size=3) +
theme_minimal() +
labs(title="깔끔한 디자인의 산점도")
✅ 결과: theme_minimal()
을 사용하여 더욱 깔끔한 스타일 적용
4-2. 그래프에 텍스트 라벨 추가
r복사편집ggplot(mpg, aes(x=displ, y=hwy)) +
geom_point() +
geom_text(aes(label=model), vjust=-0.5) +
labs(title="자동차 모델별 연비 분석")
✅ 결과: 산점도 위에 각 자동차 모델명을 표시
5. Q&A
Q1. ggplot2는 왜 데이터 시각화에 강력한가요?
- 레이어 방식을 사용하여 복잡한 그래프도 쉽게 만들 수 있습니다.
- 기본적인 통계 분석 기능이 내장되어 있어 추가적인 분석이 가능합니다.
Q2. ggplot2로 인터랙티브 그래프도 만들 수 있나요?
- 기본적으로 정적인 그래프를 생성하지만, plotly 패키지와 결합하면 인터랙티브 그래프도 제작할 수 있습니다.
r복사편집library(plotly)
ggplotly(ggplot(mpg, aes(x=displ, y=hwy)) + geom_point())
✅ 결과: 마우스 움직임에 반응하는 동적 그래프
Q3. ggplot2로 지도 시각화도 가능한가요?
- ggmap 패키지를 사용하면 지도 기반 시각화도 가능합니다.