deeptime
팩키지에 나온 데이터를 활용하여 시각화해보자.
library(deeptime)
library(tidyverse)
library(divDyn)
data(corals)
corals %>%
corals_tbl <- as_tibble()
corals_tbl %>%
coral_div <- filter(stage != "") %>%
group_by(stage) %>%
summarise(n = n()) %>%
mutate(stage_age = (stages$max_age[match(stage, stages$name)] + stages$min_age[match(stage, stages$name)])/2)
::reactable(coral_div) reactable
상기 데이터를 시각화하면 다음과 같다.
ggplot(coral_div) +
geom_line(aes(x = stage_age, y = n)) +
scale_x_reverse("Age (Ma)") +
ylab("Coral Genera") +
coord_geo( xlim = c(250, 0), ylim = c(0, 1700)) +
theme_classic()
coord_geo()
함수가 핵심적인 역할을 수행하고 해당 데이터는 Macrostrat - A platform for geological data exploration, integration, and analysis 에 정의되어 있다. 별도 데이터를 연대기를 갖는 데이터를 원하는 경우 data(periods)
함수를 사용해서 이에 맞춰 표현이 가능하다.
library(gsloid)
%>%
lisiecki2005 as_tibble() %>%
ggplot(aes(x = d18O, y = Time/1000)) +
geom_line(orientation = "y") +
scale_y_reverse("Time (Ma)") +
scale_x_reverse() +
coord_geo(dat = "Geomagnetic Polarity Chron", xlim = c(6,2), ylim = c(6,0), pos = "left", rot = 90) +
theme_classic()
연대기를 정의하는 기본 데이터는 다음 구조를 갖는다.
data(periods)
periods
name max_age min_age abbr color
6 Quaternary 2.588 0.000 Q #F9F97F
17 Neogene 23.030 2.588 Ng #FFE619
31 Paleogene 66.000 23.030 Pg #FD9A52
46 Cretaceous 145.000 66.000 K #7FC64E
61 Jurassic 201.300 145.000 J #34B2C9
73 Triassic 252.170 201.300 Tr #812B92
86 Permian 298.900 252.170 P #F04028
96 Carboniferous 358.900 298.900 C #67A599
107 Devonian 419.200 358.900 D #CB8C37
120 Silurian 443.400 419.200 S #B3E1B6
131 Ordovician 485.400 443.400 O #009270
148 Cambrian 541.000 485.400 Cm #7FA056
151 Ediacaran 635.000 541.000 Ed #FED96A
152 Cryogenian 850.000 635.000 Cry #FECC5C
154 Tonian 1000.000 850.000 Tn #FEBF4E
155 Stenian 1200.000 1000.000 Stn #FED99A
156 Ectasian 1400.000 1200.000 Ec #F3CC8A
158 Calymmian 1600.000 1400.000 Cl #FDC07A
159 Statherian 1800.000 1600.000 Stt #F875A7
160 Orosirian 2050.000 1800.000 Ors #F76898
161 Rhyacian 2300.000 2050.000 R #F75B89
164 Siderian 2500.000 2300.000 Sd #F74F7C
library(rvest)
Sys.setlocale("LC_ALL", locale = "C")
[1] "C"
read_html(x = "https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EC%9D%B8%EA%B5%AC", encoding = 'utf-8') %>%
wiki_raw <- html_element(xpath = '//*[@id="mw-content-text"]/div[1]/table[6]') %>%
html_table(fill = TRUE)
Sys.setlocale("LC_ALL", locale = "Korean")
[1] "LC_COLLATE=Korean_Korea.949;LC_CTYPE=Korean_Korea.949;LC_MONETARY=Korean_Korea.949;LC_NUMERIC=C;LC_TIME=Korean_Korea.949"
wiki_raw %>%
wiki_tbl <- janitor::clean_names(ascii = FALSE) %>%
select(연도 = 연도_년, 인구 = 추계인구_명) %>%
mutate(인구 = parse_number(인구)) %>%
mutate(name = case_when( 연도 <= 1953 ~ "Korean War",
> 1953 & 연도 <= 1963 ~ "Baby Boomer",
연도 > 1963 ~ "X Gen"))
연도
%>%
wiki_tbl ggplot(aes(x = 연도, y = 인구)) +
geom_line() +
scale_y_continuous(labels = scales::comma) +
labs(x=NULL, y=NULL,
title = "대한민국 인구") +
theme_bw(base_family = "NanumGothic")
시대정신 - 유권자에 나타난 정보를 시각화해보자.
c("Korean War", 1900, 1953, "War", "#F9F97F")
war_gen <- c("Baby Boomer", 1954, 1963, "Baby", "#FFE619")
babyboom_gen <- c("X Gen", 1964, 1980, "X-Gen", "#FD9A52")
x_gen <-
list(war_gen, babyboom_gen, x_gen)
gen_list <-
tibble(name = map_chr(gen_list, 1),
gen_tbl <-min_age = map_chr(gen_list, 3) %>% as.integer,
max_age = map_chr(gen_list, 2) %>% as.integer,
abbr = map_chr(gen_list, 4),
color = map_chr(gen_list, 5))
gen_tbl
periods <-
%>%
wiki_tbl ggplot(aes(x = 연도, y = 인구)) +
geom_line() +
scale_y_continuous(labels = scales::comma) +
labs(x=NULL, y=NULL,
title = "대한민국 인구") +
theme_bw(base_family = "NanumGothic") +
coord_geo(dat = "periods", xlim = c(0, 2020))
데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com