2024. 10. 2. 15:12ㆍGCC/데이터 애널리틱스
R의 데이터 시각화 자료 생성
R의 시각화
데이터 시각화의 중요성
- 데이터 시각화의 역할
- 데이터를 시각화하면 데이터의 의미를 명확하게 전달하고, 중요한 정보를 강조할 수 있습니다.
- 이해관계자들에게 데이터를 설득력 있게 제시하는 데 시각화는 매우 중요한 도구입니다.
- 데이터 스토리텔링
- 시각적 자료를 활용하면 데이터 스토리가 더 생생하고 쉽게 전달됩니다. 데이터 분석 결과를 효과적으로 전달하기 위한 중요한 도구입니다.
ggplot2 패키지 소개
- ggplot2의 특징
- ggplot2는 R에서 가장 널리 사용되는 시각화 패키지이며, tidyverse 패키지의 일부입니다.
- 매우 강력하면서도 사용자 친화적이며, 다양한 시각적 표현을 제공하여 데이터를 쉽게 분석하고 시각화할 수 있습니다.
- 코드를 통한 시각화 작업
- 다음 수업에서는 ggplot2를 사용하여 다양한 플롯을 생성하고, 데이터의 여러 변수를 구성하는 방법을 배울 예정입니다.
- 플롯의 스타일과 모양을 맞춤설정할 수 있어 시각적 요소를 조정하는 방법을 익히게 됩니다.
학습의 이점
- 즉각적인 피드백
- 코드를 입력하고 실행하면 시각적으로 즉각적인 결과를 확인할 수 있어 즉시 피드백을 받을 수 있습니다.
- 플롯을 통해 데이터를 더 잘 이해할 수 있으며, 시각화 작업의 성과를 바로 확인할 수 있다는 점에서 동기부여가 됩니다.
- 데이터 변화에 유연하게 대응
- 데이터를 변경해도 ggplot2를 통해 데이터를 쉽게 재시각화할 수 있어, 다양한 시나리오에서 유연하게 작업할 수 있습니다.
R 및 tidyverse 시각화의 기본사항
R의 시각화 패키지 개요
- R에서의 시각화 패키지
- R에는 기본적으로 제공되는 시각화 도구(Base R)뿐만 아니라 Plotly, RGL, Lattice 등 다양한 패키지가 있습니다.
- 이 패키지들은 단순한 원형 차트부터 복잡한 3D 시각 자료, 대화형 그래프, 맵까지 다양한 데이터를 시각적으로 표현하는 데 도움을 줍니다.
- ggplot2의 선호 이유
- ggplot2는 R에서 가장 널리 사용되며, 강력하고 유연한 패키지로 평가받습니다.
- 단독으로 사용하거나 다른 패키지와 함께 사용할 수 있으며, 약간의 코드만으로도 고품질의 플롯을 생성할 수 있습니다.
- 따라서 이번 강좌에서는 ggplot2를 중심으로 학습을 진행합니다.
ggplot2의 기원과 배경
- ggplot2의 개발
- 2005년에 통계학자 해들리 위컴이 개발한 ggplot2는 **'The Grammar of Graphics'**에서 영감을 받았습니다.
- 릴랜드 윌킨스의 데이터 시각화 논문에서 유래된 개념으로, "grammar"처럼 시각 자료를 만드는 규칙을 정의합니다.
- 구성 요소의 재사용성
- ggplot2의 기본적인 구성 요소를 학습하면, 그 단계를 재사용하여 다양한 유형의 플롯을 쉽게 만들 수 있습니다.
- 데이터의 기본 구조나 기반 데이터를 변경하지 않고도 세부적인 레이어를 추가하거나 삭제할 수 있어 매우 유연합니다.
ggplot2의 주요 기능
- 다양한 플롯 유형 지원
- 분산형 차트, 막대 그래프, 선 다이어그램 등 다양한 시각화를 생성할 수 있습니다.
- 또한 플롯의 색상, 레이아웃, 측정 기준을 변경하고, 제목, 캡션, 라벨 등의 텍스트 요소를 추가할 수 있습니다.
- 파이프 연산자와 데이터 조작
- ggplot2는 파이프 연산자를 사용하여 데이터를 시각화하는 동안 데이터를 조작할 수 있습니다. 이를 통해 데이터를 보다 효율적으로 처리하고 시각화할 수 있습니다.
ggplot2의 핵심 개념 소개
- 시각적 요소 (Aesthetics)
- 시각적 요소는 플롯 내 객체의 시각적 속성을 정의합니다. 예를 들어, 분산형 차트의 점 크기, 도형, 색상이 시각적 요소에 해당합니다.
- 기하학적 요소 (Geometries)
- 기하학적 요소는 데이터를 시각적으로 나타내는 기하학적 객체입니다. 예를 들어, 포인트는 분산형 차트, 막대는 막대 그래프, 선은 선 다이어그램을 나타냅니다.
- 면 분할 (Faceting)
- 면 분할은 데이터의 작은 그룹이나 일부 세트를 표시하여 변수별로 플롯을 구분할 수 있도록 도와줍니다.
- 라벨과 주석
- 제목, 부제목, 캡션 등의 텍스트 요소를 플롯에 추가하여 데이터의 의미를 더 명확히 전달할 수 있습니다.
ggplot() 시작하기
Palmerpenguins 데이터를 사용한 ggplot2 플롯 생성 요약
- palmerpenguins 데이터 개요: 세 종의 남극 펭귄에 대한 데이터로, 체질량, 물갈퀴 길이, 부리 길이 등의 변수가 포함되어 있습니다.
- ggplot2와 데이터 로드:
- ggplot2 패키지와 palmerpenguins 데이터를 R에서 로드합니다.
- ggplot() 함수로 플롯을 초기화하고, 데이터를 입력해 빈 플롯을 생성합니다.
- 기하학적 요소 추가:
- geom_point()를 사용하여 플롯에 포인트를 추가하여 두 변수 간의 관계를 나타냅니다.
- aes() 함수로 데이터의 시각적 요소(변수)를 지정합니다. 예를 들어, x축에 물갈퀴 길이(flipper_length_mm), y축에 체질량(body_mass_g)을 매핑하여 두 변수의 양의 상관관계를 플롯으로 시각화합니다.
- ggplot2 코드 구조 요약:
- 데이터 입력: ggplot() 함수에서 데이터 프레임을 지정하고 플롯을 초기화합니다.
- 기하학적 요소 추가: geom_point()로 포인트를 추가해 데이터 포인트를 표시합니다.
- 변수 매핑: aes()로 플롯에서 사용할 변수를 지정합니다.
- 오류 방지 팁:
- R은 대소문자를 구분하므로 함수나 변수명을 정확하게 입력해야 합니다.
- 함수 괄호는 열고 닫는 짝이 맞아야 하며, 각 줄 끝에 + 기호를 추가해 레이어를 더할 수 있습니다.
- 더하기 기호의 위치에 주의하고 실수로 파이프 기호를 사용하지 않도록 합니다.
- 도움말 리소스:
- R의 각 함수에 대한 자세한 내용을 알고 싶을 때는 ?함수_이름을 사용하여 도움말을 참조합니다.
- R 온라인 커뮤니티에서도 문제 해결 방법을 찾을 수 있습니다.
R 데이터 시각화의 일반적인 문제
코딩 오류는 코드를 작성할 때 불가피한 부분입니다. 특히 처음으로 새 프로그래밍 언어를 배우기 시작할 때는 더욱 그렇습니다. 이 읽기 자료에서는 ggplot2를 사용하여 시각화 자료를 만들 때 일반적인 코딩 오류를 파악하는 방법을 배웁니다. 앞으로 겪게 될 코딩 문제를 해결하는 데 도움이 될만한 리소스 링크를 찾는 방법도 알아봅니다.
ggplot2의 일반적인 코딩 오류
ggplot2에서 R 코드로 작업할 때 흔한 코딩 오류의 대부분은 잘못된 문자 위치 등 구문 문제와 관련이 있습니다. 그렇기 때문에 코드를 작성할 때는 세부사항에 집중해야 합니다. 코드에 R이 감지할 수 있는 오류가 있는 경우 오류 메시지가 표시됩니다. 오류 메시지는 올바른 방향으로 나아가는 데 유용하지만, 문제를 정확하게 파악하는 데 도움이 되지 않을 때도 있습니다.
ggplot2에서 흔히 발생하는 코딩 오류 몇 가지를 살펴보겠습니다.
대소문자 구분
R 코드는 대소문자를 구분합니다. 실수로 특정 함수의 첫 글자로 대문자를 입력하면 코드에 영향을 미칠 수 있습니다. 다음은 예시입니다.
Glimpse(penguins)
다음 오류 메시지는 R에서 ‘Glimpse’라는 함수를 찾을 수 없음을 알려줍니다.
Error in Glimpse(penguins) : could not find function "Glimpse"
그러나 여러분은 glimpse(소문자 ‘g’)라는 함수가 존재한다는 사실을 알고 있습니다. 즉, 오류 메시지는 무엇이 틀렸는지 정확하게 설명하지는 않지만, 올바른 방향으로 나아가도록 안내합니다.
이를 바탕으로 여러분은 다음이 올바른 코드임을 알아낼 수 있습니다.
glimpse(penguins)
괄호와 따옴표의 균형
또 다른 일반적인 R 코딩 오류는 괄호 및 따옴표와 관련이 있습니다. R에서 함수의 모든 여는 괄호에는 닫는 괄호가 있어야 하고, 모든 여는 따옴표에는 닫는 따옴표가 있어야 합니다. 예를 들어 다음 코드를 실행하면 아무 일도 일어나지 않으며, R에서 플롯을 생성하지 않습니다. 코드 두 번째 줄에서 닫는 괄호 두 개가 누락됐기 때문입니다.
ggplot(data = penguins) +
geom_point(mapping = aes(x = flipper_length_mm, y = body_mass_g
RStudio에서는 문제에 관해 알려줍니다. RStudio 소스 편집기에서 코드 줄 왼쪽에는 중앙에 흰색 ‘X’가 있는 빨간색 원이 표시됩니다. 원 위로 마우스 커서를 가져가면 다음과 같이 메시지가 표시됩니다.
RStudio에서 짝이 맞지 않는 여는 괄호가 있다는 사실을 알려줍니다. 그러므로 코드를 알맞게 수정하려면 여는 괄호와 짝이 맞는 닫는 괄호를 추가해야 합니다.
올바른 코드는 다음과 같습니다.
ggplot(data = penguins) +
geom_point(mapping = aes(x = flipper_length_mm, y = body_mass_g))
더하기 기호를 사용하여 레이어 추가
ggplot2에서는 플롯에 새 레이어를 추가할 때 더하기 기호(‘+’)를 코드에 추가해야 합니다. 흔히 실수로 더하기 기호를 잘못된 위치에 입력합니다. 더하기 기호는 항상 코드 줄의 시작이 아니라 끝에 입력해야 합니다.
다음은 더하기 기호를 잘못된 위치에 입력한 코드 예시입니다.
ggplot(data = penguins)
+ geom_point(mapping = aes(x = flipper_length_mm, y = body_mass_g))
이 경우 R의 오류 메시지는 문제를 파악하여 수정하라고 안내합니다.
Error: Cannot use `+.gg()` with a single argument. Did you accidentally put + on a new line?
올바른 코드는 다음과 같습니다.
ggplot(data = penguins) +
geom_point(mapping = aes(x = flipper_length_mm, y = body_mass_g))
플롯에 새 레이어를 추가하기 위해 실수로 다음과 같이 더하기 기호가 아닌 파이프를 사용하기도 합니다.
ggplot(data = penguins)%>%
geom_point(mapping = aes(x = flipper_length_mm, y = body_mass_g))
그러면 다음과 같은 오류 메시지가 표시됩니다.
Error: `data` must be a data frame, or other object coercible by `fortify()`, not an S3 object with class gg/ggplot
올바른 코드는 다음과 같습니다.
ggplot(data = penguins) +
geom_point(mapping = aes(x = flipper_length_mm, y = body_mass_g))
코드를 작성할 때 이러한 문제를 염두에 두고 세부사항에 주의를 기울이면 오류를 줄이고 시간을 절약하여 분석에 집중하는 데 도움이 됩니다.
도움말 리소스
코드를 작성할 때 누구나 실수할 수 있습니다. 실수는 학습 과정의 일부입니다. 다행히 RStudio와 온라인에 유용한 리소스가 많이 있습니다.
R 문서
R에서는 모든 함수와 패키지에 관한 문서를 기본 제공합니다. R 함수에 관해 자세히 알아보려면 ?함수_이름 코드를 실행하세요. 예를 들어 geom_bar 함수에 관해 자세히 알아보려면 다음을 입력합니다.
?geom_bar
코드를 실행하면 RStudio 작업공간의 오른쪽 하단 창에서 Help 뷰어에 ‘geom_bar’ 항목이 표시됩니다. 이 항목은 막대 그래프에 관해 설명하는 ‘Description’ 섹션으로 시작됩니다.
RDocumentation 웹사이트에서는 동일한 내용을 추가 예시 및 링크와 함께 약간 다른 형식으로 소개합니다.
ggplot2 문서
ggplot2 페이지는 공식 tidyverse 문서의 일부이며 ggplot2와 관련된 모든 정보를 알아볼 수 있는 훌륭한 리소스입니다. 핵심 주제, 유용한 코드 예시, 기타 유용한 리소스 링크가 포함되어 있습니다.
온라인 검색
발생한 오류 메시지를 (검색어에 ‘R’ 및 패키지 또는 함수 이름을 포함하여) 온라인에 검색하는 것도 한 가지 방법입니다. 누군가가 이미 동일한 오류를 겪고 이를 온라인에 게시했을 가능성이 큽니다.
R 커뮤니티
다른 리소스가 도움이 되지 않는 경우 온라인 R 커뮤니티에 방문해보세요. 다음과 같이 질문하고 도움을 받을 수 있는 유용한 온라인 포럼과 웹사이트가 많습니다.
분석에서 시각적 요소 살펴보기
R의 시각화 자료 개선
시각적 요소를 활용한 데이터 강조 요약
시각적 요소를 사용하여 데이터를 더욱 설득력 있게 제시하는 방법에 대해 학습합니다. 시각적 요소는 데이터를 강조하고 이해관계자에게 중요한 포인트를 명확하고 효과적으로 전달하는 데 매우 유용합니다.
주요 개념:
- 시각적 요소 정의: 플롯 내의 객체의 시각적 속성으로, 데이터 포인트의 크기, 도형, 색상 등을 포함합니다.
- 시각적 요소 매핑: aes() 함수를 사용해 특정 변수를 시각적 요소에 매핑함으로써 플롯에서 변수 간의 관계를 시각적으로 나타냅니다. 예를 들어, 펭귄 데이터에서 물갈퀴 길이를 x축에, 체질량을 y축에 매핑할 수 있습니다.
주요 코드:
- 데이터 로드: ggplot2 패키지와 penguins 데이터 세트를 로드합니다.
- 시각적 요소 매핑: aes() 함수에서 데이터를 시각적 요소에 매핑하여 각 펭귄 종(species)을 색상(color), 도형(shape), 크기(size)에 따라 구분합니다.
r
ggplot(data = penguins, mapping = aes(x = flipper_length_mm, y = body_mass_g)) + geom_point(aes(color = species, shape = species))
주요 학습 포인트:
- 시각적 요소의 사용: 색상(color), 도형(shape), 크기(size), 투명도(alpha) 등 다양한 시각적 요소를 사용해 데이터를 표현하고 강조할 수 있습니다.
- 여러 시각적 요소 매핑: 하나의 변수에 여러 시각적 요소를 매핑할 수 있습니다. 예를 들어, 펭귄 종을 색상과 도형에 동시에 매핑하면 데이터를 더욱 명확하게 전달할 수 있습니다.
- 특정 시각적 요소 설정: aes() 함수 외부에 코드를 작성하면 특정 변수에 관계없이 플롯의 모든 포인트에 동일한 시각적 속성을 적용할 수 있습니다.
r
geom_point(color = "purple")
시각적 요소 활용의 효과:
- 명확한 데이터 구분: 펭귄 종에 따라 색상과 도형을 달리 설정하면 데이터 간의 차이를 쉽게 파악할 수 있습니다.
- 가독성 향상: 크기와 투명도를 조정하여 데이터의 밀집도를 조절할 수 있으며, 시각적으로 더 효과적인 플롯을 만들 수 있습니다.
시각적 요소 속성
이 읽기 자료에서는 R에서 ggplot2 시각화 자료를 만들 때 고려할 세 가지 기본적인 시각적 요소 속성인 색상, 크기, 도형에 관해 배웁니다. 이러한 속성은 ggplot2로 데이터 시각화 자료를 생성할 때 필수 도구이며 코드에 바로 추가됩니다.
ggplot2의 시각적 요소
ggplot2는 R 작업공간에서 다양한 유형의 데이터 시각화 자료를 생성할 수 있는 R 패키지입니다. ggplot2에서 시각적 요소는 플롯 내 객체의 시각적 속성으로 정의됩니다.
ggplot2에는 다음과 같은 세 가지 시각적 요소 속성이 있습니다.
- 색상: 플롯의 모든 포인트 또는 각 데이터 그룹의 색상을 변경합니다.
- 크기: 데이터 그룹별로 플롯의 포인트 크기를 변경합니다.
- 도형: 데이터 그룹별로 플롯의 포인트 도형을 변경합니다.
다음은 R에서 시각적 요소 속성이 어떻게 표시되는지 보여주는 예시입니다.
ggplot(data, aes(x=distance, y= dep_delay, color=carrier, size=air_time, shape = carrier)) +
geom_point()
ggplot2의 작업에 이러한 시각적 요소 속성을 적용하여 R에서 데이터 추세를 명확하게 전달하는 데이터 시각화 자료를 만들 수 있습니다.
추가 리소스
시각적 요소 속성에 관한 자세한 정보는 다음 리소스를 참고하세요.
- ggplot2 데이터 시각화 요약본: ggplot2로 작업할 때 참고하기 좋은 RStudio의 요약본입니다. 기하학적 요소의 사용 방법 설명과 생성 가능한 다양한 시각화 자료 예시 등 유용한 정보가 많습니다.
- RDocumentation aes 함수: aes 함수 구문과 각 인수의 역할을
- Stats Education의 R 입문: ggplot2 기본사항과 시각적 요소 속성을 플롯에 적용하는 방법을 배우기에 아주 유용한 리소스입니다. ggplot2와 자체 데이터로 작업할 때 언제든 이 튜토리얼을 참고해보세요.
ggplot 자세히 알아보기
다양한 기하학적 요소를 사용하여 데이터를 시각적으로 표현하는 방법을 배웠습니다. 기하학적 요소는 데이터의 시각적 표현 방식에 영향을 미치는 중요한 요소로, ggplot2에서 여러 유형의 플롯을 생성할 때 사용됩니다. 주로 사용하는 기하학적 요소 함수로는 geom_point, geom_smooth, geom_jitter, geom_bar 등이 있으며, 이를 통해 데이터를 다양한 방식으로 시각화할 수 있습니다.
- 분산형 차트 (geom_point):
- 데이터의 각 관측치를 포인트로 시각화합니다.
- 이 함수는 변수들 간의 상관관계를 시각적으로 확인할 수 있는 대표적인 방법입니다.
- 곡선 (geom_smooth):
- 데이터의 전반적인 추세를 나타내는 곡선을 추가합니다.
- 분산형 차트 위에 곡선을 추가하여 데이터의 양의 상관관계를 명확히 보여줄 수 있습니다.
- 포인트와 추세선 결합:
- geom_point와 geom_smooth를 결합하여, 데이터 포인트와 추세선을 함께 표시할 수 있습니다.
- 이 방법은 데이터의 관찰값과 추세를 동시에 보여주기 때문에 더 많은 정보를 전달할 수 있습니다.
- 지터 (geom_jitter):
- 데이터 포인트들이 겹쳐서 시각적으로 구분이 어려운 경우, 소량의 노이즈를 추가하여 포인트 간의 간격을 늘리는 방식입니다.
- 오버플로팅 문제를 해결하고, 포인트 간의 구분을 쉽게 만듭니다.
- 막대 그래프 (geom_bar):
- 막대 그래프는 주로 범주형 데이터를 시각화할 때 사용되며, x값의 빈도수를 y축에 자동으로 표시합니다.
- 예시로 diamonds 데이터 세트에서 cut 변수를 사용하여 막대 그래프를 생성한 후, 각 컷 품질에 해당하는 다이아몬드 수를 나타냅니다.
- 색상 및 채우기 요소:
- 색상 시각적 요소를 사용하여 범주형 변수를 색상에 매핑하고, 그래프의 가독성을 높일 수 있습니다.
- color=cut으로 막대 윤곽선에 색상을 추가하거나, fill=cut을 사용하여 막대 안에 색상을 채워 누적 막대 그래프를 만들 수 있습니다.
- 이 외에도 clarity 변수를 채우기 요소로 사용하여 컷과 선명도의 조합을 시각화할 수 있습니다.
이처럼 기하학적 요소는 데이터를 다양한 방식으로 시각화하는 데 매우 유용하며, 이를 통해 데이터의 중요한 패턴과 차이를 명확하게 전달할 수 있습니다.
평활화
이 읽기 자료에서는 ggplot2의 평활화에 관해 알아보고 R 데이터 시각화를 보다 명확하고 보기 쉽게 만들 수 있는 평활화 활용 방법을 배웁니다. 분산형 차트만으로는 데이터의 추세를 파악하기가 어려울 때가 있습니다. 평활화는 플로팅된 데이터 포인트의 추세를 알아차리기 어려운 경우에도 데이터 추세를 파악하는 데 도움이 됩니다. ggplot2의 평활화 기능은 플롯에 평활선을 추가 레이어로 포함하므로 유용합니다. 평활선이 있으면 일반 사용자도 데이터를 쉽게 이해할 수 있습니다.
ggplot(data, aes(x=distance, y= dep_delay)) + geom_point() + geom_smooth() |
예시 코드는 아래 파란색 선과 유사한 추세선이 있는 플롯을 생성합니다.
평활화의 두 가지 유형
평활화 유형 | 설명 | 예시 코드 |
LOESS 평활화 | LOESS(국소 회귀) 평활화 과정은 포인트가 1,000개 미만인 플롯을 평활화할 때 가장 좋습니다. | ggplot(data, aes(x=, y=))+ geom_point() + geom_smooth(method="loess") |
GAM 평활화 | GAM 평활화(일반화 가법 모델 평활화)는 포인트 수가 많은 플롯을 평활화할 때 좋습니다. | ggplot(data, aes(x=, y=)) + geom_point() + geom_smooth(method="gam", formula = y ~s(x)) |
ggplot2의 평활화 기능은 데이터 플롯의 가독성을 높여서 보다 쉽게 데이터 추세를 파악하고 유용한 핵심 정보를 얻을 수 있도록 합니다. 아래의 첫 번째 플롯은 평활화 이전 데이터이며, 두 번째 플롯은 같은 데이터의 평활화 이후입니다.
추가 리소스
평활화에 관한 자세한 정보는 Stats Education의 R 입문 강좌에서 Smoothing 섹션을 참고하세요. ggplot2에서 다양한 평활화 유형을 사용하는 방법에 관한 자세한 설명과 예시가 포함되어 있습니다. ggplot2 관련 다른 강의 링크도 있습니다. R의 데이터 플로팅에 익숙해지는 데 도움이 될 것입니다.
시각적 요소 및 면 분할
ggplot2에서 데이터를 **면 분할(faceting)**하여 다양한 시각적 관점에서 분석하는 방법을 배웠습니다. 면 분할은 데이터의 일부 세트를 별도의 플롯으로 나누어 보여주는 방법으로, 복잡한 데이터에서 중요한 패턴을 더 명확하게 드러낼 수 있습니다.
면 분할의 주요 개념
- facet은 데이터를 여러 작은 플롯으로 나누어 각 플롯에 데이터의 다른 측면을 표시하는 기술입니다. 예를 들어, 펭귄 종별로 데이터를 분할하여 체질량과 물갈퀴 길이 간의 관계를 보여줄 수 있습니다.
- 면 분할을 통해 데이터에서 새로운 패턴을 발견하거나 변수 간의 관계를 더 명확하게 파악할 수 있습니다.
두 가지 주요 면 분할 함수
- facet_wrap:
- 단일 변수에 따라 플롯을 분할합니다.
- 예를 들어, 펭귄의 종별로 데이터를 나누어 각 종마다 별도의 플롯을 생성할 수 있습니다.
코드 예시:
R
ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point() +
facet_wrap(~species)
-
- 이 코드는 각 펭귄 종별로 물갈퀴 길이와 체질량 간의 관계를 보여주는 분산형 차트를 만듭니다.
- facet_grid:
- 두 개의 변수에 따라 플롯을 분할합니다.
- 첫 번째 변수는 세로 축, 두 번째 변수는 가로 축에 사용됩니다.
- 예를 들어, 펭귄의 성별과 종에 따라 데이터를 분할하여 9개의 플롯을 생성할 수 있습니다.
코드 예시:
R
ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point() +
facet_grid(sex ~ species)
-
- 이 코드는 성별과 종에 따라 3x3 그리드 형태의 플롯을 만들어 성별과 종에 따른 물갈퀴 길이와 체질량의 관계를 시각화합니다.
실습 예시
- **facet_wrap**을 사용하여 다이아몬드 데이터 세트에서 컷 카테고리별로 막대 그래프를 생성할 수 있습니다.
- **facet_grid**는 두 변수 간의 복잡한 관계를 더 세밀하게 보여주고, 변수 간 비교를 쉽게 할 수 있도록 도와줍니다. 예를 들어, 펭귄 데이터 세트에서 성별과 종 간의 관계를 확인하는 데 사용할 수 있습니다.
면 분할의 장점
- 면 분할을 통해 단일 플롯으로는 파악하기 어려운 데이터를 여러 각도에서 분석할 수 있습니다.
- 플롯이 너무 번잡하거나 많은 변수로 인해 혼란스러울 때, 데이터를 분할하여 가독성을 높이고 중요한 관계를 쉽게 확인할 수 있습니다.
필터링과 플롯
현재 여러분의 R 라이브러리에는 최소 한 두 개의 패키지가 다운로드되어 있을 것입니다. 일부 패키지의 도구는 함께 사용할 수 있으며 함께 사용할 때 한층 유용합니다. 이 읽기 자료에서는 dplyr의 필터 함수를 사용하여 ggplot2로 생성한 플롯을 읽기 쉽게 만드는 방법을 설명하는 몇 가지 리소스를 소개합니다.
플로팅을 위한 데이터 필터링 예시
플롯 작업 전에 데이터를 필터링하면 데이터의 일부 세트에 집중하여 원하는 항목의 유용한 정보를 얻을 수 있습니다. dplyr filter() 함수를 ggplot 구문에 포함하기만 하면 됩니다.
data %>% filter(variable1 == "DS") %>% ggplot(aes(x = weight, y = variable2, colour = variable1)) + geom_point(alpha = 0.3, position = position_jitter()) + stat_smooth(method = "lm") |
추가 리소스
ggplot2 및 dplyr을 사용한 필터링에 관해 자세히 알아보려면 다음 리소스를 참고하세요.
- Putting it all together: (dplyr+ggplot): 실제 데이터를 사용하여 R 함수를 설명하는 RLadies of Sydney의 R 강좌입니다. 이 강의에서는 특히 dplyr과 ggplot을 함께 사용하여 플로팅 전에 데이터를 필터링하는 방법을 집중적으로 다룹니다. 이 학습 영상에서는 학습자가 제공된 데이터를 사용해 직접 따라 해볼 수 있도록 과정의 모든 단계를 자세히 안내합니다.
- Data transformation: R에서 filter() 함수를 사용하는 방법을 설명하고 filter()와 ggplot()을 함께 사용하는 방법을 보여주는 리소스입니다. 플로팅 전에 filter()를 사용하는 방법을 자세히 알고 싶은 경우 유용합니다.
- Visualizing data with ggplot2: 가장 기본적인 ggplot2 사용법, 복잡한 시각화 자료 생성 방법 등 모든 내용을 담고 있는 종합 가이드입니다. 대부분의 예시에 filter() 함수가 포함되어 있으므로 R에서 filter()를 구현하여 데이터 시각화 자료를 생성하는 방법을 배울 수 있습니다.
주석 추가 및 시각화 자료 저장
주석 레이어
ggplot2를 사용하여 플롯의 모양과 스타일을 맞춤설정하는 방법, 특히 라벨과 주석을 추가하는 방법을 배웠습니다. 이를 통해 데이터 시각화에서 핵심 정보를 강조하고, 이해관계자에게 효과적으로 전달할 수 있습니다.
라벨과 주석의 중요성
- 라벨: 플롯에 제목, 부제목, 캡션 등을 추가하여 플롯의 목적과 내용을 명확히 설명합니다. 예를 들어, 펭귄의 체질량과 물갈퀴 길이 간의 관계를 설명하는 제목을 추가할 수 있습니다.
- 주석: 특정 데이터 포인트에 대한 설명이나 추가 정보를 제공하여 데이터의 중요성을 강조합니다.
라벨 추가하기
- 제목 추가:
- 플롯의 상단에 제목을 추가하여 플롯의 주제를 명확히 합니다.
- 코드 예시:
R코드 복사ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) + geom_point() + labs(title = "Penguin Body Mass vs Flipper Length")
- 부제목 추가:
- 제목 아래에 부제목을 추가하여 더 구체적인 정보를 제공합니다.
코드 예시:
R
labs(title = "Penguin Body Mass vs Flipper Length",
subtitle = "Data collected from Palmer Station")
- 캡션 추가:
- 데이터 출처를 명시하는 캡션을 추가하여 출처의 신뢰성을 높입니다.
코드 예시:
R
labs(caption = "Data source: Dr. Kristen Gorman, 2007-2009")
주석 추가하기
- 특정 데이터 포인트를 강조하기 위해 annotate 함수를 사용합니다.
코드 예시:
R
annotate("text", x = 220, y = 3500, label = "The Gentoos are the largest", color = "purple", fontface = "bold", size = 5, angle = 25)
변수 활용하기
- 긴 코드를 간소화하기 위해 플롯을 변수에 저장할 수 있습니다.
예시:
R
p <- ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point() +
labs(title = "Penguin Body Mass vs Flipper Length")
# 주석 추가
p + annotate("text", x = 220, y = 3500, label = "The Gentoos are the largest", color = "purple", fontface = "bold", size = 5, angle = 25)
플롯 맞춤설정의 장점
- 라벨과 주석을 통해 데이터를 보다 명확히 전달하고, 복잡한 플롯에서 핵심 정보를 강조할 수 있습니다.
- 이해관계자가 플롯을 빠르게 이해할 수 있도록 도와주는 중요한 도구입니다.
R에서 화살표 및 도형 그리기
주석은 플롯에 메모를 추가하는 유용한 방법입니다. 주석을 사용하면 플롯의 목적을 설명하거나, 중요한 데이터 포인트를 강조표시하거나, 플롯이 보여주는 데이터 추세나 결론에 의견을 추가할 수 있습니다. 이미 라벨, 제목, 부제목, 캡션으로 메모를 추가하는 방법을 배웠습니다. 플롯에 화살표를 그리거나 도형을 추가하여 강조 효과를 내는 방법도 배웠습니다. 보통은 시각화 자료를 저장한 뒤에 프레젠테이션 애플리케이션에서 주석을 추가합니다. 그러나 이제 ggplot2를 사용하여 선, 화살표, 도형을 플롯에 추가할 수 있습니다.
리소스
자세한 내용은 다음 리소스를 참고하세요.
- Create an annotation layer: ggplot2로 주석 레이어를 추가하는 방법을 설명하는 가이드입니다. ggplot2에서 생성되었으며 주석이 있는 샘플 코드 및 데이터 시각화 자료가 포함되어 있습니다.
- How to annotate a plot in ggplot2: ggplot2 플롯에 다양한 주석을 추가하는 방법을 설명하는 리소스입니다. 특정 주석 유형을 빠르게 찾아야 할 때 참고하기 좋습니다.
- Annotations: ‘ggplot2 - R로 분석한 데이터를 멋진 그래픽으로’의 온라인 학습서 8장으로, 주석에 관해 집중적으로 다룹니다. 다양한 주석 유형과 사용 방법을 상세한 예시와 함께 심도 있게 설명합니다.
- How to annotate a plot: ggplot2에서 플롯에 주석을 추가하는 방법을 설명하는 R 블로거의 게시글입니다. 기본 개념부터 시작해서 보다 복잡한 정보까지 다룹니다.
- Text Annotations: ggplot2 시각화 자료에 텍스트 주석과 라벨을 추가하는 방법을 집중적으로 다룬 리소스입니다.
시각화 자료 저장
ggplot2를 사용하여 플롯을 저장하는 방법을 배웠습니다. 플롯을 저장하는 것은 작업을 재현하고 공유하기 위해 매우 중요합니다. 이를 통해 팀원들과의 협업을 원활하게 할 수 있습니다.
플롯 저장하기
- RStudio 'Export' 옵션 사용하기
- RStudio의 'Plots' 탭에서 'Export' 버튼을 클릭하여 플롯을 저장할 수 있습니다.
- 파일 형식으로는 PNG, JPEG, PDF 등을 선택할 수 있으며, 이 중에서 PNG 형식을 선택하는 예시가 소개되었습니다.
- 파일 이름을 지정하고 'Save'를 클릭하면 파일이 저장됩니다.
- ggsave 함수 사용하기
- ggsave 함수는 플롯을 쉽게 저장할 수 있는 방법입니다. 기본적으로 가장 최근에 표시된 플롯을 저장합니다.
아래와 같은 방법으로 ggsave를 사용해 PNG 형식으로 플롯을 저장할 수 있습니다:
R
ggsave("Three_Penguin_Species.png")
-
- 파일 이름 뒤에 원하는 파일 확장자를 입력하면 됩니다.
- 파일 확인
- 파일이 저장된 후, RStudio의 'Files' 탭을 클릭하여 목록에서 저장된 파일을 확인할 수 있습니다.
- 데이터 시각화의 기초: ggplot2를 사용하여 데이터 시각화를 시작하는 방법을 배웠습니다. 다양한 기하학적 요소를 사용하여 분산형 차트, 막대 그래프 등을 생성하는 방법을 익혔습니다.
- 플롯 맞춤설정: 라벨과 주석을 사용하여 플롯을 더 명확하게 하고 데이터의 중요한 부분을 강조하는 방법을 학습했습니다.
- 작업 저장하기: 작업을 저장하여 나중에 액세스하거나 다른 사람과 공유할 수 있는 방법을 배웠습니다.
ggsave() 없이 이미지 저장
대부분의 경우 ggsave()를 사용하면 플롯을 가장 간편하게 저장할 수 있습니다. 그러나 플롯을 그래픽 기기에서 직접 작성하여 저장하는 편이 최선인 경우도 있습니다. 이 읽기 자료에서는 ggsave() 없이 이미지와 플롯을 저장하는 다양한 방법을 다루고, 자세한 내용을 참고할 수 있는 추가 리소스를 소개합니다.
그래픽 기기는 플롯을 컴퓨터에 표시합니다. 예시는 다음과 같습니다.
- 컴퓨터의 창(화면 기기)
- PDF, PNG, JPEG 파일(파일 기기)
- SVG(Scalable Vector Graphics) 파일(파일 기기)
R에서 만드는 플롯은 특정 그래픽 기기로 ‘전송’되어야 합니다. ggsave()를 사용하지 않고 이미지를 저장하려면 png() 또는 pdf() 같은 R 그래픽 기기를 열어 플롯을 .png 또는 .pdf 파일로 저장하면 됩니다. 플롯을 출력한 다음 dev.off()를 사용하여 기기를 닫는 방법도 있습니다.
png() 사용 예 | pdf() 사용 예 |
png(file = "exampleplot.png", bg = "transparent") plot(1:10) rect(1, 5, 3, 7, col = "white") dev.off() | pdf(file = "/Users/username/Desktop/example.pdf", width = 4, height = 4) plot(x = 1:10, y = 1:10) abline(v = 0) text(x = 0, y = 1, labels = "Random text") dev.off() |
다양한 이미지 저장 방법에 관해 자세히 알아보려면 다음 리소스를 참고하세요.
- Saving images without ggsave(): tidyverse.org의 ggplot2 문서입니다. R에서 이미지를 저장하는 데 사용할 수 있는 도구를 소개하고, R 작업공간에서 직접 따라 하면서 이미지를 저장하는 방법을 배울 수 있도록 다양한 예시를 사용합니다.
- Saving a plot in R: R에서 플롯 저장에 사용할 수 있는 여러 파일 형식을 다룬 가이드입니다. 각 섹션에는 R 작업공간에서 연습할 때 사용해볼 수 있도록 복사 가능한 실제 플롯 예시가 포함되어 있습니다.
- How to save a ggplot: ggplot을 저장하는 다양한 방법을 다루는 리소스입니다. 절차의 각 단계를 더 잘 이해할 수 있도록 복사 가능한 코드 및 각 함수의 사용 방식에 관한 설명이 함께 포함되어 있습니다.