1.8 위치 조정
colour 또는 fill 옵션을 통해 막대 차트에 색상을 지정할 수 있다.
ggplot(data = diamonds)+
geom_bar(mapping = aes(x = cut, colour = cut))
ggplot(data = diamonds)+
geom_bar(mapping = aes(x = cut, fill = color))
채우기(fill) 옵션을 clarity 와 같은 다른 변수에 매핑하면 막대가 자동을 누적된다. 각 색상이 지정된 직사각형은 cut 과 clarity 의 조합으로 나타낸다.
ggplot(data = diamonds)+
geom_bar(mapping = aes(x = cut, fill = clarity))
스택은 position 옵션으로 지정된 위치 조정에 의해 자동으로 수행된다.
position 옵션
1. postion = "identity"
그래프 context에서 정확한 해당 위치에 각 개체를 배치한다. 막대끼리 서로 겹치기 때문에 그다지 유용하지 않다. alpha 값이 작아질 수로 투명해지고, alpha 값이 NA인 경우 가장 진해진다. 따라서 alpha값을 조정하여 확인해 볼 수 있다.
#alpha = 0일 경우
ggplot(data = diamonds, mapping = aes(x = cut, fill = clarity) )+
geom_bar(alpha = 0, position = "identity")
# alpha = 1/5일 경우
ggplot(data = diamonds, mapping = aes(x = cut, fill = clarity) )+
geom_bar(alpha = 1/5, position = "identity")
# alpha = NA일 경우
ggplot(data = diamonds, mapping = aes(x = cut, fill = clarity) )+
geom_bar(alpha = NA, position = "identity")
2. position = "fill"
스태킹처럼 작동하지만 각 스택 막대 세트의 높이를 동일하게 만든다. 이로써 그룹 간의 비율을 더 쉽게 비교할 수 있다.
ggplot(data = diamonds)+
geom_bar(mapping = aes(x = cut, fill = clarity), position = "fill")
3. position = "dodge"
겹치는 개체를 바로 옆에 배치한다. 개별을 더 쉽게 비교할 수 있다.
ggplot(data = diamonds)+
geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")
4. position = "jitter"
앞에서 mpg 데이터를 이용하여 그려진 산점도는 234개의 관측값이 있음에도 플롯에 126개 포인트만 표시한다. 이는 hwy 와 displ 변수의 많은 포인트가 서로 중첩되도록 반올림하여 나타난다. 이처럼 배열된 경우 데이터의 질량이 어디에 있는지 보기 어렵게 만든다. (이 문제를 overplowting이라 한다)
이 문제를 해결하기위해 position 옵션을 "jitter"로 설정하여 위와 같은 격자를 피할 수 있다. "jitter"은 산점도에서 유용한 조정 유형이다. "jitter"을 그릴때, 데이터셋이 작은 그래프일 수록 정확도가 떨어지지만 데이터의 규모가 클 수록 그래프가 더 잘 드러난다.
# 1 )
ggplot(data = mpg)+
geom_point(mapping = aes(x = displ, y = hwy))
# 2 ) : jitter option
ggplot(data = mpg)+
geom_point(mapping = aes(x = displ, y = hwy), position = "jitter")
연습문제
1. 이 플롯의 문제점은 무엇입니까? 어떻게 개선할 수 있습니까?
ggplot(data = mpg, mapping = aes(x = cty, y= hwy))+
geom_point()
- cty와 hwy의 값이 중첩되도록 반올림하여 나타내기 때문에 위와 같은 그래프가 만들어진다. 따라서 이 문제를 해결하기 위해서는 position = jitter 을 추가해 그래프를 그린다.
ggplot(data = mpg, mapping = aes(x = cty, y = hwy))+
geom_point(position="jitter")
2. geom_jitter() 의 지터링의 양을 제어하기 위한 매개변수는 무엇입니까?
- 지터링의 양은 width 와 height 옵션에서 제어할 수 있다.
3. geom_jitter() 와 geom_count() 를 비교하고 대조하시오
- geom_jitter() 와 geom_count() 둘 다 겹치는 점이 많을 때 데이터를 더 잘 표현하고 데이터의 질량이 있는 위치를 표시할 수 있다.
- geom_jitter() 는 중첩 포인트를 수직 및 수평으로 약간 이동하여 중첩 포인트를 보다 명확하게 표시한다.
- geom_count() 는 겹치는 점을 계산하고 대신 점의 크기에 카운트를 매핑한다.
- 예를 들어 아래와 같은 jitter과 count를 그릴 수 있다.
# geom_jitter
ggplot(data = mpg) +
geom_jitter(mapping = aes(x = drv, y = displ ))
# geom_count
ggplot(data = mpg)+
geom_count(mapping = aes(x = drv, y = displ))
4. geom_boxplot() 의 기본 위치조정은 무엇입니까? mpg 데이터 셋을 이용하여 시각화하라.
- geom_boxplot() 의 기본 위치조정은 dodge 이다.
ggplot(data = mpg) +
geom_boxplot(mapping = aes(y = displ, x = drv, color = factor(year)))
'Study > R' 카테고리의 다른 글
[R4DS] 1장 데이터 시각화 - 08 그래프 레이어 문법 (0) | 2022.01.10 |
---|---|
[R4DS] 1장 데이터 시각화 - 07 좌표계 (0) | 2022.01.10 |
[R4DS] 1장 데이터 시각화 - 05 통계적 변환 (0) | 2022.01.10 |
[R4DS] 1장 데이터 시각화 - 04 기하객체 (0) | 2022.01.10 |
[R4DS] 1장 데이터 시각화 - 03 facet (0) | 2021.11.27 |