# dplyr librar - as in last lecture
library(dplyr)
# handle spatial data
library(sp)
# 'nice' color palettes
library(RColorBrewer)
# plotting library
library(ggplot2)
# The rainfall data - as in last lecture
load("rainfall.RData")
dplyr and ggplotlibrary(lubridate)
rain %>% mutate(Date=ymd(paste0(Year,'-',Month,'-15'))) -> rain
rain %>% filter(Station=="Belfast") -> rain_belfast
rain %>% filter(Station=="Phoenix Park") -> rain_phoenix
lubridate - package to handle dates and timesymd - Turns Month and Year into a calendar date (15th of month)rain_belfast %>% arrange(Date) %>% head(n=5)
## # A tibble: 5 x 5
## Year Month Rainfall Station Date
## <dbl> <fct> <dbl> <chr> <date>
## 1 1850 Jan 116. Belfast 1850-01-15
## 2 1850 Feb 120. Belfast 1850-02-15
## 3 1850 Mar 56.8 Belfast 1850-03-15
## 4 1850 Apr 143. Belfast 1850-04-15
## 5 1850 May 57.9 Belfast 1850-05-15
plot_phoenix <- ggplot(rain_phoenix,aes(x=Date,y=Rainfall)) + geom_line(col='grey50') + geom_point(col='navy',size=0.5) +labs(title="Phoenix Park")
plot_phoenix
library(plotly)
plot_phoenix %>% ggplotly()
plot_phoenix %>% ggplotly(tooltip = 'Rainfall', dynamicTicks=TRUE)
rain_phoenix %>%
mutate(`Total Rain`=paste('Rainfall', format(Rainfall,digits = 3),'(mm total)')) ->
rain_phoenix
plot_phoenix <- ggplot(rain_phoenix,aes(x=Date,y=Rainfall)) + geom_line(col='grey50') +
geom_point(aes(text=`Total Rain`),col='navy',size=0.5) +
labs(title="Phoenix Park",y='Rainfall (mm total)')
plot_phoenix %>% ggplotly(tooltip = 'text', dynamicTicks=TRUE)
Merge the two data sets
rain_belfast %>%
mutate(`Total Rain`=paste('Rainfall', format(Rainfall,digits = 3),'(mm total)')) ->
rain_belfast
rain_belfast %>% bind_rows(rain_phoenix) -> rain_bp
rain_bp %>% highlight_key(~Date) -> rain_bp_hk
plot_bp <- ggplot(rain_bp,aes(x=Date,y=Rainfall,group=Station)) + geom_line(col='grey50') +
geom_point(aes(text=`Total Rain`),col='navy',size=0.5) +
labs(y='Rainfall (mm total)') + facet_wrap(~Station,nrow=2)
ggplotly(plot_bp,tooltip='text', dynamicTicks=TRUE)
# Filter out observations post 1980 - then set highlight key to Station
rain %>% filter(Year > 1980) %>% highlight_key(~Station,"Stations") -> rain_hs
# Create a ggplot of date vs. rainfall grouped by Station
ggplot(rain_hs,aes(x=Date,y=Rainfall,group=Station)) + geom_line(col='grey50') +
labs(y='Rainfall (mm total)') -> plot_ks
# Turn this into an interactive plotly object
ggplotly(plot_ks,tooltip='Station',dynamicTicks = TRUE) %>%
highlight(on = "plotly_click", off = "plotly_doubleclick",color='seagreen')
ggplotly(plot_ks,tooltip='Station',dynamicTicks = TRUE) %>%
highlight(on = "plotly_click", off = "plotly_doubleclick",color=c('seagreen','navy','darkred'),
selectize = TRUE,persistent = TRUE,dynamic = TRUE) %>% layout(title="Total Rainfall (mm)")
highlight function specifies the operation of the highlight
persistent means the highlighted articles stay when you select extra onesselectize makes the selection control box appeardynamicand colors let you change selection colorlayout allows further changes in the style of the plots# Filter out Birr post 1980 for data. Highlight key is 'Year'
rain %>% filter(Year > 1980,Station=='Birr') %>% highlight_key(~Year,"Year") -> rain_hy
# Create the ggplot object - monthly rainfalls separated into year groups
ggplot(rain_hy,aes(x=Month,y=Rainfall,group=Year)) + geom_line(col='grey50') + geom_point() +
labs(y='Rainfall (mm total)') -> plot_ky
# Turn it into a plotly interactive graph
ggplotly(plot_ky,tooltip='Year') %>%
highlight(on = "plotly_click", off = "plotly_doubleclick",color='navy') %>%
layout(title="Birr Monthly Rainfall (mm)")
facet_wrap and highlighting are good togetherrain %>% filter(Year > 1980,Station %in% c('Birr','Valentia')) %>%
highlight_key(~Year,"Year") -> rain_hy2
ggplot(rain_hy2,aes(x=Month,y=Rainfall,group=Year)) + geom_line(col='grey50') +
geom_point(col='seagreen') + facet_wrap(~Station,ncol = 1) + labs(y='mm rain') -> plot_ky2
ggplotly(plot_ky2,tooltip='Year') %>%
highlight(on = "plotly_click", off = "plotly_doubleclick",color='navy')
nrow and ncol in the help for facet_wrapsave(rain_bp,file='rain_saved.RData')
plotly