본문 바로가기
Programing/R

[R] 데이터 시각화의 기본 기능_데이터를 여러 관점에서 보게 함

by 구루미94 2021. 10. 22.

시각화의 주요 특징

1. 비교/ 순위

- 실습) 1952년 아시아 대륙의 인구 분포에서 각 국가의 순위

gapminder %>%
  filter(year==1952&continent=="Asia")%>%
  ggplot(aes(reorder(country, pop), pop))+
  geom_bar(stat="identity")+coord_flip()

- reorder(x축 변수, 정렬기준변수)

- stat="identity": 막대그래프 그릴 때 넣어야하는 옵션

- coord_flip(): 가로축과 세로축의 위치 변경

- 위의 그래프는 중국과 인도의 인구가 다른 국가에 비해 월등히 많아 싱가포르와 같은 인구가 적은 국가는 확인이 거의 불가.

- 이런 경우 로그 스케일의 축을 사용해서 큰 값은 작게, 작은 값은 상대적으로 크게 변환해야한다.

gapminder %>%
  filter(year==1952 & continent=="Asia") %>%
  ggplot(aes(reorder(country, pop), pop)) +
  geom_bar(stat="identity") +
  scale_y_log10() +
  coord_flip()

- 데이터 간의 상대적인 차이를 직접 비교하거나 순위를 표시하는 데는 이런 막대그래프가 유리하다.

 

2. 변화 추세

- 실습) gapminder 데이터에 포함된 한국의 lifeExp 변화를 연도에 따라 시각화

gapminder %>%
  filter(country=="Korea, Rep.") %>%
  ggplot(aes(year, lifeExp, col=country))+
  geom_point()+
  geom_line()

- 여러 데이터의 변화를 동시에 비교할 때는 다음과 같이 색상으로 구분된 다중 플롯을 사용한다.

- 단, continent와 같은 범주형 속성을 이용해 구분이 가능해야 한다.

- 여기에 ggplot2의 geom_smooth 함수를 이용해 평균적인 추세선을 표시할 수도 있다.

gapminder %>%
  ggplot(aes(x=year, y=lifeExp, col=continent))+
  geom_point(alpha=0.2)+
  geom_smooth()

3. 분포 혹은 구성 비율

- 실습) 1952년 전 세계 lifeExp의 분포를 시각화.

x=filter(gapminder, year==1952)
hist(x$lifeExp, main="Histogram of lifeExp in 1952")

- ggplot 함수를 이용한 결과

x %>%
  ggplot(aes(lifeExp))+
  geom_histogram()

- 실습) boxplot 함수를 이용하여 대륙별로 세분화된 분포 특성 살펴보기

x %>%
  ggplot(aes(continent, lifeExp)) +
  geom_boxplot()

 

4. 상관관계

- 상관관계는 데이터에 내재된 의미와 인과관계를 설명하는 단서가 될 뿐만 아니라,

모델링을 통해 미지의 결과를 예측하는 데도 활용된다.

plot(log10(gapminder$gdpPercap), gapminder$lifeExp)

728x90

댓글