#####################################################################
### 7/25(Thu)/2019
### Web-R.org에서 spaghetti plot을 접하고 Google에서 검색하다가 찾음
### 출처:https://www.data-to-viz.com/caveat/spaghetti.html
#####################################################################
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.4.4
## -- Attaching packages ------------------------------------------ tidyverse 1.2.1 --
## √ ggplot2 3.1.0 √ purrr 0.3.0
## √ tibble 2.0.1 √ dplyr 0.8.0.1
## √ tidyr 0.8.2 √ stringr 1.4.0
## √ readr 1.3.1 √ forcats 0.3.0
## Warning: package 'ggplot2' was built under R version 3.4.4
## Warning: package 'tibble' was built under R version 3.4.4
## Warning: package 'tidyr' was built under R version 3.4.4
## Warning: package 'readr' was built under R version 3.4.4
## Warning: package 'purrr' was built under R version 3.4.4
## Warning: package 'dplyr' was built under R version 3.4.4
## Warning: package 'stringr' was built under R version 3.4.4
## Warning: package 'forcats' was built under R version 3.4.4
## -- Conflicts --------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(hrbrthemes)
## Warning: package 'hrbrthemes' was built under R version 3.4.4
## NOTE: Either Arial Narrow or Roboto Condensed fonts are required to use these themes.
## Please use hrbrthemes::import_roboto_condensed() to install Roboto Condensed and
## if Arial Narrow is not on your system, please see http://bit.ly/arialnarrow
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 3.4.4
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
options(knitr.table.format = "html")
library(babynames)
## Warning: package 'babynames' was built under R version 3.4.4
#library(streamgraph) # Not available for 3.4.2
library(viridis)
## Warning: package 'viridis' was built under R version 3.4.4
## Loading required package: viridisLite
## Warning: package 'viridisLite' was built under R version 3.4.4
library(DT)
library(plotly)
## Warning: package 'plotly' was built under R version 3.4.4
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
# Load dataset from github
###(1) The first spaghetti plot
data <- babynames %>%
filter(name %in% c("Mary","Emma", "Ida", "Ashley", "Amanda", "Jessica", "Patricia", "Linda", "Deborah", "Dorothy", "Betty", "Helen")) %>%
filter(sex=="F")
# Plot
data %>%
ggplot( aes(x=year, y=n, group=name, color=name)) +
geom_line() +
scale_color_viridis(discrete = TRUE) +
theme(
legend.position="none",
plot.title = element_text(size=14)
) +
ggtitle("A spaghetti chart of baby names popularity") +
theme_ipsum()
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x,
## x$y, : 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다

###(2) The second spaghetti plot
data %>%
mutate( highlight=ifelse(name=="Amanda", "Amanda", "Other")) %>%
ggplot( aes(x=year, y=n, group=name, color=highlight, size=highlight)) +
geom_line() +
scale_color_manual(values = c("#69b3a2", "lightgrey")) +
scale_size_manual(values=c(1.5,0.2)) +
theme(legend.position="none") +
ggtitle("Popularity of American names in the previous 30 years") +
theme_ipsum() +
geom_label( x=1990, y=55000, label="Amanda reached 3550\nbabies in 1970", size=4, color="#69b3a2") +
theme(
legend.position="none",
plot.title = element_text(size=14)
)
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x,
## x$y, : 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다

###(3) The third spaghetti plot
data %>%
ggplot( aes(x=year, y=n, group=name, fill=name)) +
geom_area() +
scale_fill_viridis(discrete = TRUE) +
theme(legend.position="none") +
ggtitle("Popularity of American names in the previous 30 years") +
theme_ipsum() +
theme(
legend.position="none",
panel.spacing = unit(0.1, "lines"),
strip.text.x = element_text(size = 8),
plot.title = element_text(size=14)
) +
facet_wrap(~name)
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x,
## x$y, : 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x,
## x$y, : 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다

###(4) The fourth spaghettu plot
tmp <- data %>%
mutate(name2=name)
tmp %>%
ggplot( aes(x=year, y=n)) +
geom_line( data=tmp %>% dplyr::select(-name), aes(group=name2), color="grey", size=0.5, alpha=0.5) +
geom_line( aes(color=name), color="#69b3a2", size=1.2 )+
scale_color_viridis(discrete = TRUE) +
theme_ipsum() +
theme(
legend.position="none",
plot.title = element_text(size=14),
panel.grid = element_blank()
) +
ggtitle("A spaghetti chart of baby names popularity") +
facet_wrap(~name)
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x,
## x$y, : 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x,
## x$y, : 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## 윈도우즈 폰트데이터베이스에서 찾을 수 없는 폰트페밀리입니다
