모바일 기기에 맞게 플롯 최적화하기
x축 제목은 이미 두 연도에 대한 레이블을 추가했기 때문에 꽤 불필요합니다. 이제 플롯에 국가 레이블을 추가해 모든 축을 제거해 보겠습니다.
이번 연습에서는 아마 처음 보게 될 개념을 접하게 됩니다. geom_text() 같은 개별 지오메트리에 새 데이터 세트를 지정하면, 초기 ggplot() 호출에 전달한 데이터 세트를 사용하지 않을 수 있습니다. 이 연습에서는 각 화살표에 레이블을 정확히 하나만 추가하려면 이 방법이 필요합니다. 원래 데이터 세트인 ilo_data를 사용하면, 각 국가에 대해 1996년과 2006년 관측치가 각각 하나씩 있어 레이블이 두 개 추가될 것이기 때문입니다.
이 연습은 강의의 일부입니다
Tidyverse로 데이터 소통하기
연습 안내
- 국가별로 레이블이 하나만 있도록 새 데이터 세트
median_working_hours가 만들어졌습니다.str()로 구조를 확인하세요. - 각 국가에 대한 레이블을 추가하려면 새
geom_text()호출에서data인수로median_working_hours를 사용하세요.geom_text()에 필요한 미적 요소인x와label을 올바르게 지정하고,median_working_hours데이터 세트의 올바른 변수를 가리키도록 하세요.
- 사용자 지정
theme()호출에서 모든axis.인수와panel.grid인수에element_blank()함수를 지정해 축과 배경 그리드를 모두 제거하세요. - 최종 코드를 실행한 뒤, 오른쪽 플롯 창 크기를 세로형(좁고 길게) 모바일 화면처럼 조정해 보세요. 모든 레이블이 플롯 뷰포트에 맞게 표시됩니다.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Compute temporary data set for optimal label placement
median_working_hours <- ilo_data %>%
group_by(country) %>%
summarize(median_working_hours_per_country = median(working_hours)) %>%
ungroup()
# Have a look at the structure of this data set
___
ilo_dot_plot +
# Add label for country
geom_text(data = ___,
aes(y = country,
x = ___,
label = ___),
vjust = 2,
family = "Bookman",
color = "gray25") +
# Remove axes and grids
theme(
axis.ticks = ___,
axis.title = ___,
axis.text = ___,
panel.grid = ___,
# Also, let's reduce the font size of the subtitle
plot.subtitle = element_text(size = 9)
)