역사에 길이 남을 기념비적인 시각화 역작을 살펴보자. 1 2 3

데이터 시각화 역사

1 나폴레옹 러시아 침공

나폴레옹 러시아 침공Charles Joseph Minard가 시각화한 산출물이 첫손에 꼽는 시각화 역작이다.

나폴레옹 러시아 침공

library(ggplot2)
library(maps)
library(mapproj)
library(HistData) #  데이터

나폴레옹 군대 러시아 침공 데이터를 HistData에서 얻는다. 위도경도 정보가 있기 때문에 이를 지도에 투영하여 시각화는데 공격(A)과 퇴각(R)을 색상으로 구분하고 생존 군인수를 굵기를 통해 나폴레옹 군대의 러시아 침공 시점별로 군대 현황에 대한 정보를 한눈에 시각화할 수 있다.

# 1. 데이터 가져오기 -------------------------------------------------------------

data(Minard.troops); data(Minard.cities)
troops <- Minard.troops
cities <- Minard.cities

# 2. 지도 -------------------------------------------------------------
russia <- map_data("world", region="Russia")
russia <- subset(russia, group != 32)

# 3. 시각화 -----------------------------------------------------------
plot_polished <- ggplot(troops, aes(long, lat)) + 
    geom_path(aes(size=survivors, color = direction, group = group)) + 
    geom_text(aes(label = city), size = 3, data = cities) +
    coord_fixed(ratio=3) # 종횡비 조정: 3 x 1

plot_polished

2 존 스노우 콜레라 4 5

John Snow 콜레라 발병 지도

library(cholera)
par(mfrow=c(1,2))

plot(neighborhoodVoronoi())
plot(neighborhoodWalking())

3 갭마인더(Gapminder - Hans Rosling) 6

library(gapminder)
library(gganimate)

ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
  geom_point(show.legend = FALSE, alpha = 0.7) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 12)) +
  scale_x_log10() +
  labs(title = '연도: {frame_time}', x = '1인당 GDP', y = '기대수명') +
  transition_time(year) +
  ease_aes('linear')

4 나이팅게일 사망자수(War Mortality) 7

나이팅게일 전쟁 사망자수

library(HistData)
data(Nightingale)
library(tidyverse)
library(ggthemes)
library(extrafont)
loadfonts()

mortality_df <- Nightingale %>% 
  select(Date, Disease.rate, Wounds.rate, Other.rate) %>% 
  gather(Cause, Deaths, -Date) %>% 
  mutate(Cause = str_replace_all(Cause, "\\.rate", ""), 
         Regime = rep(c(rep("Before", 12), rep("After", 12)), 3)) %>% 
  mutate(Regime = factor(Regime, levels=c("Before", "After")))

cp <- coord_polar(start = 3*pi/2)
cp$is_free <- function() TRUE

mortality_df %>% 
  ggplot(aes(x = factor(Date), y = Deaths, fill = Cause)) +
  geom_col(color = "black") + 
  scale_y_sqrt() +
  # facet_wrap( ~ Regime, scales = "free", labeller = label_both) +
  facet_wrap( ~ Regime, scales = "free_x", labeller = label_both) + 
  cp +
  labs(x = NULL, y = NULL, 
       fill = "병사 사망원인",
       title = "크림전쟁 병사 사망원인 - 나이팅게일", 
       caption = "데이터 출처: 크림전쟁 병사 사망원인 데이터 종합") + 
  theme_fivethirtyeight(base_family = "NanumGothic") + 
  scale_fill_fivethirtyeight() +
  theme(legend.position = "top")

5 전기 도표(Chart of Biography)

전기도표

6 마이애미 헤럴드 허리케인 피해 GIS 지도 8

마이애미 허리케인