1. 심미성 매핑
"그래프의 가장 큰 가치는 전혀 예상하지 못한 것을 보여줄 때이다." - 죤 튜키
https://ceulkun04.tistory.com/5 (R언어 [1] 강에서 displ과 hwy의 연관성을 비교해서 나타낸 산점도를 다시보자)
- 대부분의 데이터들은 우리가 예상했던 우하향을 보이지만 빨간점으로 표시한 부분들은 예상하지 못했다.
- 해당 특이점을 확인해보기 위하여심미성(aesthetic)을 이용해보자.
- 심미성(aesthetic)? : Plot 객체들의 시각적 속성
----ex) : 점의크기, 색상, 모양 등등
- ex) 차종에 따라 색깔을 다르게 하여 그래프에 표시해보자!
- Code
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy, color = class))
- result
- 이렇게 차종에 따라 색깔을 다르게 하여 그래프에 표시를 해보았더니 우리가 전 그래프에 빨간점으로 표실해뒀던 부분이
2seater / 즉 스포츠카 라는것을 알수있다.
-심미성을 변수에 매핑하기 위해선 aes()내부에 심미성 이름을 변수 이름과 연결해야함.
-----> cf) geom_point(mapping = aes(x = displ, y = hwy, color = class))
-ggplot2는 변수의 고유한 값에 심미성의 고유한 level을 자동 지정함
----> 이를 Scaling 이라함
- 또한 ggplot2는 자동으로 그래프의 우측에 범례를 추가함
2. 심미성 매핑의 예시
2.1 . Size
ggplot(data = mpg) +
geom_point(mapping = aes(x=displ,y=hwy, size = class))
2.2 alpha (점의 밝기)
ggplot(data = mpg) +
geom_point(mapping = aes(x=displ, y=hwy, alpha = class))
2.3 Shape(모양)
ggplot(data = mpg) +
geom_point(mapping = aes(x=displ , y = hwy , shape = class))
- 여기서 shape 심미성level을 적용하면 범례에 특이점이 보인다.
- suv가 비어있음 -> 이유 : ggplot2는 한번에 6개의 shape만 적용가능
3. 심미성을 수동 설정하는 법
- code
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy),color = 'blue')
- result
- 다음과 같이 심미성을 수동으로 설정해줄려면 심미성 이름을 geom함수의 인수로 설정해주면됨
- 즉, aes()외부.
4. 연습문제
Q1) 다음코드는 무엇인가? 왜 점의 색이 파란색이 아닌가?
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y =hwy,color = 'blue'))
- color = 'blue'는 수동으로 심미성을 설정하는 방식을 통해 고쳐야한다. 따라서 aes() 외부에 존재해야함
- Code
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy),color = 'blue')
Q2) mpg의 어느 변수가 범주형인가? 어떤 변수가 연속형인가?
code
str(mpg)
result
tibble [234 × 11] (S3: tbl_df/tbl/data.frame)
$ manufacturer: chr [1:234] "audi" "audi" "audi" "audi" ...
$ model : chr [1:234] "a4" "a4" "a4" "a4" ...
$ displ : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
$ year : int [1:234] 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
$ cyl : int [1:234] 4 4 4 4 6 6 6 4 4 4 ...
$ trans : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
$ drv : chr [1:234] "f" "f" "f" "f" ...
$ cty : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...
$ hwy : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...
$ fl : chr [1:234] "p" "p" "p" "p" ...
$ class : chr [1:234] "compact" "compact" "compact" "compact" ...
연속형 : displ, cty,hwy
범주형 : manufacturer, model, year, trans , drv , f1, class, cyl
Q3) 연속형 변수 하나를 color, size, shape로 매핑하라. 이러한 심미성은 범주형, 연속형 변수에 따라 어떻게 다르게 작동하는가?
- color
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ , y = hwy, color = cty))
-Size
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y= hwy, size = cty))
- 범주형 : 각 값에 따른 color, size, shape가 나타남
- 연속형 : 자동으로 범위가 정해서 범위에 따른 color,size가 정해져 나타남
Q4) 하나의 변수를 여러 심미성에 매핑하면 어떻게 되는가?
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy,
color = class, shape = class, alpha = class))
- 하나의 변수에 대해 여러 심미성이 모두 반영된다.
- 상황에 따라 적당히 사용하면 분석하기 편하지만, 너무 다양한 심미성을 적용하면 오히려 복잡해진다.
Q5) 변수 이름이 아닌 것에 심미성을 매핑하면 어떻게 되나요? 예를 들어 aes(colour = displ < 5)와 같이 매핑한다면 어떻게 되는 건가요? x와 y도 함께 지정해야 합니다.
- 다음과 같이 Boolean으로 분리됨 displ <5 를 만족하면 True , 아니면 False 를 Return 함
'DS Study > R4DS(R언어)' 카테고리의 다른 글
[R4DS] [1-6] 위치 조정 (0) | 2024.03.30 |
---|---|
[R4DS] [1-5] 통계적 변환 (0) | 2024.03.30 |
[R4DS] [1-4] 기하 객체 (Geom 함수 정리) (0) | 2024.03.30 |
[R4DS] [1-3] Facet (0) | 2024.03.29 |
[R4DS] [1-1] ggplot2 이란? (2) | 2024.03.27 |