| Current Travis Build Status | |
|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|
The quake package visualizes NOAA earthquake data. quake shows when earthquakes happened on a labelled timeline, and where they happened on an interactive map.
Two custom, ggplot2 geometries, geom_timeline and geom_timeline_label make for easy earthquake, timeline plotting and labelling, while function eq_map shows earthquake locations.
quake is available from GitHub and is installed using the devtools package as follows:
devtools::install_github("RussellPolitzky/quake")
NOAA data is supplied without a consolidate date column and given locations includes country, as well as province and city. As such, the eq_clean_data function adds a date column as well as one for clean_location.
The example code below reads a sample file using data.table's fread function and cleans it using eq_clean_data. The sample shows the first three rows and columns 1-5, and 48-49 of the cleaned output.
library(data.table)
library(magrittr)
library(quake)
data_file_name <- system.file("extdata", "earthquakes.tsv", package = "quake")
clean_data <- fread(data_file_name) %>% eq_clean_data
clean_data[1:3, c(1:5, 48:49)] # show 1st three rows and cols 1-5 and 48-49
#> I_D FLAG_TSUNAMI YEAR MONTH DAY date clean_location
#> 1 1 -2150 1 1 -2150-01-01 BAB-A-DARAA,AL-KARAK
#> 2 2 Tsu -2000 1 1 -2000-01-01 UGARIT
#> 3 3 -2000 1 1 -2000-01-01 W
quake has two custom, ggplot2 geometries to plot earthquake data. geom_timeline plots timelines while geom_timeline_label adds labels to a timeline.
The example code below generates sample data, and plots a timeline showing the dates, magnitudes and countries of the quakes.
Generate sample data:
library(magrittr)
library(quake)
library(ggplot2)
library(data.table)
n <- 100 # no. samples
# get a list of countries and cities.
cty_file <- system.file("extdata", "countries_cities.csv", package = "quake")
ctry_cty <- (fread(cty_file))[sample(1:.N, size = n, replace = TRUE), ]
# Sample data
dt <- data.table(
date = as.Date('2017-01-01') + seq(1, 365, 365/n),
country = factor(ctry_cty$Country),
location = factor(ctry_cty$City ),
intensity = runif(n)*10,
deaths = runif(n)*12
)
Plot the sample data with:
dt %>%
ggplot() +
geom_timeline(
aes(
x = date,
y = country,
size = intensity,
col = deaths
),
alpha = 0.8
) +
labs(x = "DATE") +
scale_size_continuous (name = "Richter scale value") +
scale_color_continuous(name = "# deaths" ) +
theme_classic() +
theme_timeline_with_y_axis_text
Notice the theme_timeline_with_y_axis_text theme add-on. This is one of two themes provided by the quake package, the other being theme_timeline, which turns off all y-axis graphics including text.
Also notice that by adding y = country, timelines grouped, by country, are produced. Without this optional aesthetic, all quakes will be plotted on a single timeline.
The example above shows a timeline without labels. That is, the timeline doesn't indicate the actual locations at which the quakes happened. The geom_timeline_label addresses this problem.
The example below shows a timeline, plotting the same data, but with labels added using geom_timeline_label.
dt %>%
ggplot() +
geom_timeline( # plot the timeline
aes(
x = date,
y = country,
size = intensity,
col = deaths
),
alpha = 0.8
) +
geom_timeline_label( # add labels.
aes(
label = location , # label text
x = date , # x location
y = country , # level to add label at
size = intensity #
),
n_max = 5 # only label 5 most intense quakes
) +
labs(x = "DATE") +
scale_size_continuous (name = "Richter scale value") +
scale_color_continuous(name = "# deaths" ) +
theme_classic() +
theme_timeline_with_y_axis_text

quake also aids visualization by plotting earthquake locations on a map. The code below:
eq_create_label function andlibrary(quake)
library(readr)
library(dplyr)
library(lubridate)
data_file_name <- system.file("extdata", "earthquakes.tsv.gz", package = "quake")
read_delim(data_file_name, delim = "\t") %>%
eq_clean_data() %>%
filter(COUNTRY == "MEXICO" & year(date) >= 2000) %>%
mutate(popup_text = eq_create_label(.)) %>%
eq_map(annot_col = "popup_text")
The image below shows sample output. The sample shows example pop-up detail displayed when a user clicks on a quake location.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.