1.기하 객체
-시작하기 앞서 두 플롯을 비교해보자.
![]() |
![]() |
- 두 플롯은 동일한 x 변수, 동일한 y 변수를 포함한다. 즉, 동일한 데이터를 나타낸다.
- 그러나 두 플롯은 같지 않다. --> 그 이유는 데이터를 표현하는 시각 객체가 다르기 때문이다.
- 즉, ggplot2에서의 두 플롯이 다른 지옴을 사용한다는 의미이다.
- 지옴은 데이터를 나타내기 위해 플롯이 사용하는 기하 객체(Geometric Object)를 의미한다.
2. Geom_ Function
- 다음은 gpt-3.5를 바탕으로 geom함수에 대해 정리한 것이다.
geom_functions = {
"geom_abline": "기울기와 절편을 지정하여 직선을 그립니다.",
"geom_bar": "막대 그래프를 그립니다. 범주형 데이터의 빈도를 시각화할 때 사용됩니다.",
"geom_bin2d": "2차원 막대 그래프를 그립니다. x축과 y축에 대한 이산적인 구간으로 데이터를 나누어 시각화합니다.",
"geom_blank": "공백 레이어를 그립니다. 특정 레이어를 숨기거나 공간을 확보할 때 사용됩니다.",
"geom_boxplot": "상자 그림을 그립니다. 데이터의 분포와 이상치를 시각화합니다.",
"geom_contour": "등고선을 그립니다. 2차원 데이터의 등고선을 표시합니다.",
"geom_count": "데이터를 계수하여 막대 그래프를 그립니다. 각 범주의 빈도를 표시합니다.",
"geom_crossbar": "신뢰 구간을 포함한 수직 및 수평 선을 그립니다.",
"geom_curve": "곡선을 그립니다. 시작점과 끝점을 지정하여 곡선을 그립니다.",
"geom_density": "밀도 그래프를 그립니다. 연속형 데이터의 분포를 시각화합니다.",
"geom_density_2d": "2차원 밀도 그래프를 그립니다. 이차원 밀도 추정을 기반으로 합니다.",
"geom_dotplot": "점 그래프를 그립니다. 각 데이터 포인트를 점으로 표시합니다.",
"geom_errorbar": "오차 막대를 그립니다. 주어진 데이터의 오차를 시각화합니다.",
"geom_errorbarh": "수평 오차 막대를 그립니다. 주어진 데이터의 수평 방향의 오차를 시각화합니다.",
"geom_freqpoly": "빈도 다각형을 그립니다. 연속형 데이터의 분포를 시각화합니다.",
"geom_hex": "육각형 막대 그래프를 그립니다. 2차원 밀도를 시각화합니다.",
"geom_histogram": "히스토그램을 그립니다. 연속형 데이터의 분포를 시각화합니다.",
"geom_hline": "수평선을 그립니다. 특정 값을 나타내는 수평선을 추가합니다.",
"geom_jitter": "데이터를 흩뿌려서 점 그래프를 그립니다. 겹쳐진 데이터를 시각화할 때 유용합니다.",
"geom_label": "데이터 포인트에 레이블을 추가하는 레이어를 그립니다.",
"geom_line": "데이터 포인트를 연결하는 선 그래프를 그립니다. 시계열 데이터를 시각화할 때 주로 사용됩니다.",
"geom_linerange": "선 분포를 나타내는 수직 및 수평 선을 그립니다.",
"geom_map": "지도를 그립니다. 지리적 데이터를 시각화합니다.",
"geom_path": "경로를 그립니다. 각 데이터 포인트를 직선으로 연결합니다.",
"geom_point": "점 그래프를 그립니다. 각 데이터 포인트를 점으로 표시합니다.",
"geom_polygon": "다각형을 그립니다. 주어진 데이터를 다각형으로 시각화합니다.",
"geom_qq": "Q-Q 플롯을 그립니다. 정규 분포와 주어진 데이터의 분포를 비교합니다.",
"geom_quantile": "분위수 그래프를 그립니다. 데이터의 분위수를 시각화합니다.",
"geom_raster": "래스터 이미지를 그립니다. 픽셀로 구성된 이미지를 시각화합니다.",
"geom_rect": "사각형을 그립니다. 주어진 좌표를 기반으로 사각형을 시각화합니다.",
"geom_ribbon": "경계를 가진 다각형을 그리는 레이어를 생성합니다.",
"geom_rug": "데이터 값의 위치를 표시하는 러그 레이어를 추가합니다.",
"geom_segment": "선분을 그립니다. 두 점을 연결하는 선분을 추가합니다.",
"geom_sf": "Simple Features 객체를 그립니다. 지리적 데이터를 시각화합니다.",
"geom_sf_label": "Simple Features 객체에 레이블을 추가합니다.",
"geom_sf_text": "Simple Features 객체에 텍스트를 추가합니다.",
"geom_smooth": "부드러운 곡선 또는 선을 그립니다. 데이터의 경향성을 시각화합니다.",
"geom_spoke": "특정 점에서 방사형 선을 그립니다.",
"geom_step": "계단 형태의 선 그래프를 그립니다. 데이터가 변할 때 강조하여 시각화합니다.",
"geom_text": "텍스트를 그립니다. 주어진 위치에 텍스트를 추가합니다.",
"geom_tile": "타일을 그립니다. 행렬 데이터를 히트맵 형태로 시각화합니다.",
"geom_violin": "바이올린 플롯을 그립니다. 데이터의 분포를 밀도 곡선으로 표시합니다.",
"geom_vline": "수직선을 그립니다. 특정 값을 나타내는 수직선을 추가합니다.",
}
- 그래서 왼쪽 플롯은 point 지옴을 사용했고, 오른쪽 플롯은 smooth 지옴, 즉 평활선을 이용하였다.
- ggplot2의 모든 지옴 함수는 mapping 이라는 인수를 갖는다.
- 지옴함수들의 심미성은 각각 다르기에 상황에 따라 잘 고려해봐야 한다.
- ex) geom_smooth() -> linetype(선 유형)으로 심미성 부여
ggplot(data = mpg) +
geom_smooth(mapping = aes(x = displ , y = hwy, linetype = drv))
- 다음과 같이 자동차의 동력전달장치를 의미하는 drv 값에 깇하여 차 모델들을 세 개의 선으로 분리한다.
cf) 범주 삭제하는 방법.
ggplot(data = mpg) +
geom_smooth(mapping = aes(x = displ , y = hwy, color = drv),
show.legend = FALSE)
-show.legend = FALSE 를 해주게 되면 범주가 사라지게 된다.
3. 같은 플롯에 여러 지옴을 표시하는 법
- ggplot()에 여러 지옴 함수를 추가하면 된다.
ex)
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y= hwy)) +
geom_smooth(mapping = aes(x= displ, y=hwy))
- geom 함수 내부에 코드가 중복된것이 눈에 보일 것이다.
- 만약 y축을 hwy 대신 cty로 표시하려면 두개의 geom함수 내부의 변수를 변경해야한다.
- 이러한 불편점을 해결하기위해 ggplot2에서 이러한 매핑들을 전역 매핑으로 처리하면 된다.
- 코드를 통해 무슨 의미인지 이해시켜주겠다.
-ex)
ggplot(data = mpg, mapping = aes(x= displ, y= hwy)) +
geom_point() +
geom_smooth() +
geom_step()
- 또한 전역매핑을 하더라도 각각의 지옴함수에 심미성을 부여할수 있다.
-ex)
ggplot(data = mpg, mapping = aes(x= displ, y= hwy)) +
geom_point(mapping = aes(color = class)) +
geom_smooth(mapping = aes(linetype = drv)) +
geom_step(mapping = aes(linetype = class))
4. 연습문제
Q1) Q1-1)선 그래프를 그리기 위해 어떤 지옴을 사용하는가? Q1-2)박스플롯을 그리려면? Q1-3)히스토그램?
- Q1-1) 선 그래프 : geom_line
- Q1-2) 박스플롯 : geom_boxplot
- Q1-3) 히스토그램 : geom_histogram
Q2) show.legend = FALSE 는 어떤 역할을 하는가?
- show.legend = FALSE : 범주를 나타내지 않게 한다.
Q3)geom_smooth() 의 se인수는 어떤 역할을 하는건가?
- 표준 오차 대역을 해준다. 즉 실선 주변에 그려지는 그림자같은 존재
'DS Study > R4DS(R언어)' 카테고리의 다른 글
[R4DS] [1-6] 위치 조정 (0) | 2024.03.30 |
---|---|
[R4DS] [1-5] 통계적 변환 (0) | 2024.03.30 |
[R4DS] [1-3] Facet (0) | 2024.03.29 |
[R4DS] [1-2] 심미성 매핑 (0) | 2024.03.27 |
[R4DS] [1-1] ggplot2 이란? (2) | 2024.03.27 |