ggplot2가 뭐예요? – R 시각화 기본 중 기본 패키지
데이터 분석을 하다 보면, 결과를 시각적으로 보여주고 싶을 때가 많죠. 하지만 처음엔 방법이 복잡해 보이고, 원하는 모양이 나오지 않아 포기할 때도 있을 거예요. 그래도 괜찮습니다! R 언어에서 제공하는 ggplot2 패키지를 사용하면 누구나 데이터에 생명력과 이야기를 불어넣을 수 있습니다.
이 글에서는 ggplot2를 이용해 간단한 boxplot(박스플롯)과 barplot(막대 그래프)을 그려보며, 시각화의 기본을 하나씩 배워볼 거예요. 단계별로 코드를 설명해드릴 테니 편하게 따라오세요!
ggplot2란 무엇인가요?
ggplot2는 R에서 가장 널리 사용되는 시각화 패키지입니다. 복잡한 그래프도 쉽게 만들 수 있도록 도와주며, 데이터의 구조와 패턴을 한눈에 볼 수 있게 해줘요. 예를 들어, 데이터의 분포를 파악하거나 두 그룹을 비교할 때 매우 유용합니다. 오늘은 이 ggplot2로 boxplot과 barplot을 그려보며 기본을 익혀보죠.
참고로, ggplot2 패키지는 해들리 위컴(Hadley Wickham)과 동료들이 개발한 것으로 이 패키지의 주요한 개념은 ‘그래픽 문법(Grammar of Graphics)’이라는 접근 방식에 기초하고 있어요. 패키지 이름이 gg로 시작 하는 이유를 아시겠죠?
1. ggplot2로 boxplot(박스플롯) 그리기
boxplot(박스플롯)은 데이터의 중앙값, 분포, 최솟값과 최댓값을 한눈에 보여주는 그래프입니다. 데이터가 그룹별로 어떻게 분포되어 있는지를 쉽게 파악할 수 있죠. 이제 코드를 함께 작성해 보겠습니다.
📌 코드 예제
# Load ggplot2 library
library(ggplot2)
# Create example data: Data for three groups, A, B, and C
data <- data.frame(
group = rep(c("A", "B", "C"), each = 50),
value = c(rnorm(50, mean = 5), rnorm(50, mean = 7), rnorm(50, mean = 9))
)
# Create boxplot
ggplot(data, aes(x = group, y = value)) +
geom_boxplot() +
labs(title = "Distribution of Values by Group", x = "Group", y = "Value")
✨ 코드 설명
- library(ggplot2): ggplot2 패키지를 불러옵니다.
- data.frame(): 예제 데이터를 생성합니다. 여기선 group이라는 범주(A, B, C)와 value라는 임의의 값을 넣어 구성했어요.
- ggplot(): 그래프의 시작을 알리는 함수입니다. ggplot에 원하는 데이터를 넣어 시각화를 시작합니다.
- aes(x = group, y = value): 그래프의 축을 지정합니다. x축은 그룹(group), y축은 값(value)입니다.
- geom_boxplot(): 박스플롯을 그려주는 함수입니다. 이 함수가 데이터의 중간값과 분포를 보여주죠.
- labs(): 그래프의 제목과 축 레이블을 추가합니다. 예쁘게 꾸미기 위해 제목과 각 축에 이름을 붙여주었어요.
이제 여러분이 작성한 코드를 실행해 보면 A, B, C 그룹의 분포가 아래와 같이 한눈에 보이는 박스플롯이 완성될 거예요!
2. ggplot2로 barplot(막대 그래프) 그리기
이제 barplot(막대 그래프)을 만들어 보겠습니다. 막대 그래프는 범주형 데이터의 빈도(횟수)를 시각화하는 데 주로 사용됩니다. 각 그룹에 속한 데이터가 얼마나 많은지 쉽게 확인할 수 있어요.
📌 코드 예제
# ggplot2 라이브러리 로드
library(ggplot2)
# 예제 데이터 생성: A, B, C 세 그룹의 데이터
data <- data.frame(
group = rep(c("A", "B", "C"), each = 50),
value = c(rnorm(50, mean = 5), rnorm(50, mean = 7), rnorm(50, mean = 9))
)
# barplot 생성
ggplot(data, aes(x = group)) +
geom_bar() +
labs(title = "Group별 빈도수", x = "Group", y = "빈도")
✨ 코드 설명
- aes(x = group): x축에 group 변수를 설정하여 각 그룹의 빈도를 나타냅니다.
- geom_bar(): 막대 그래프를 그리는 함수입니다. 기본 설정으로 각 그룹의 빈도를 자동으로 계산해줍니다.
- labs(): 그래프에 제목과 축 레이블을 추가해 이해하기 쉽게 꾸밉니다.
이제 이 코드를 실행하면 아래와 같이 각 그룹별 데이터의 빈도가 나타나는 막대 그래프를 볼 수 있을 거예요!
마무리: ggplot2의 세계로 초대합니다!
이제 ggplot2를 사용해 간단한 boxplot과 barplot을 그리는 방법을 배웠습니다. 처음에는 익숙하지 않아서 조금 어려울 수 있지만, ggplot2는 데이터의 다양한 면을 시각화할 수 있어 배우면 배울수록 더 흥미로워질 거예요!
혹시 ggplot2를 이용하여 오차까지 반영된 막대그래프가 궁금하신 분은 2024년 전세계가 주목하는 빅 이벤트, 미국 대선 지지율 살펴보기 – R 코딩 시각화 포스트를 확인해 보시기 바랍니다. 그리고 다음 포스트에서는 ggplot2의 고급 옵션을 소개할 예정이니 기대해 주세요!
참고로, ggplot2를 소개하고 있는 페이지에서 이 패키지를 잘 배울 수 있는 방법을 말해주고 있는데 그 내용은 다음과 같습니다.
- R for Data Science의 데이터 시각화와 커뮤니케이션 챕터: 이 책은 tidyverse에 대한 포괄적인 소개를 제공하며, ggplot2의 핵심 요소들을 빠르게 익힐 수 있도록 도와줍니다. 어려운 개념을 쉽게 풀어내기 때문에, 처음 시작하는 분들에게 아주 유용하답니다.
- 온라인 강의: 만약 온라인 강의를 통해 배우고 싶으시다면, Kara Woo의 “Data Visualization in R With ggplot2” 강의를 추천해요. 실제 사례를 바탕으로 시각화의 기초부터 심화까지 배워볼 수 있습니다.
- 웹 세미나: Thomas Lin Pedersen의 “Plotting Anything with ggplot2” 웹 세미나에 참여해보시는 것도 좋은 방법이에요. 실제 화면을 보면서 실력을 쌓을 수 있는 좋은 기회가 될 거예요.
- The R Graphics Cookbook: 빠르게 일반적인 그래프들을 만드는 데 집중하고 싶다면, Winston Chang의 “The R Graphics Cookbook“도 추천해요. 이 책은 자주 발생하는 그래픽 문제에 대한 해결책을 제시하는 레시피 형태로 구성되어 있어, 실용적인 도움이 많이 될 거예요.
- 고급 사용자라면: 만약 기본적인 내용을 숙지하셨고 더 깊이 있는 학습을 원하신다면, “ggplot2: Elegant Graphics for Data Analysis“라는 책을 읽어보세요. 이 책은 ggplot2의 이론적 토대를 설명하고, 모든 요소들이 어떻게 연결되는지를 보여줍니다. ggplot2의 이론을 이해하게 되면, 필요에 맞게 새로운 종류의 그래픽을 창조하는 데 큰 도움이 될 거예요.