require(dplyr) require(shakerr) require(ggplot2)
This package offers functionality to format earthquake data sets downloaded from the U.S. National Oceanographic and Atmospheric Administration (NOAA).
Once the data set is formatted the package offers two ways to visualize the data. The first way is by using a timeline graph where the magnitude and year of the earthquake is graphed. The second is by mapping the epicenters of a selection of earthquakes directly on a map.
The plots will not only show the location but the magnitude as well. The line graphs will have two sub-types, one that labels the top earthquakes in the timeline and one that does not. Likewise the epicenter graphs will have two subtypes, one that gives basic information about the earthquake and one with a little more detail of the magnitude and number of deaths.
This vignette will be split into two parts, the first will describe the cleaning and formatting of the data and the second the visualization of the data.
There are three types of sample data available to demonstrate the functionality
in this package. An example of one is the eq_test_data
data set. This data
set contains the magnitude and other attributes of 100 earthquakes from around
the world since recorded time of the NOAA database. The information for these
data sets may be read by running a help call ?eq_test_data
on the data set.
The following demonstrates how the data set is formatted using the package functionality.
eq_clean_data
: creates a Date classed field with the appropriate date format,
and converts the longitude and latitude fields to a numeric class.
eq_location_clean
: reformats the location name of the earthquake.
#Data before formatting head(select(eq_test_data, HOUR, MINUTE, SECOND, LONGITUDE, LATITUDE, LOCATION_NAME)) #Formatting the data frm_data <- eq_clean_data(eq_test_data) %>% eq_location_clean() #Formatted data head(select(frm_data, DATE, LONGITUDE, LATITUDE, LOCATION_NAME))
Note the first data set shows the unformatted data and the second the formatted data.
The formatted data can be visualized into two ways, the first as a timeline and the second as points of occurence on a map.
The following functions show how a timeline may be graphed, with and
without labels. The function quaketimeline_plot
utilises the GeomTimeline
and StatTimeline
Geom and Stat respectively. Labelling the timelines requires
quaketimelinelabel_plot
which uses the GeomTimelinelable
and
StatTimelinelabel
Geom and Stat respectively. Note that with labels,
the extra parameter indicates the top number of earthquakes to label by
magnitude.
quaketimeline_plot(eq_clean_testdata[1:12,], "1800-01-01","2014-01-01")
Instead of using the function, the underlying geom_timeline
function may be
used. Note that a minimum and maximum date need to be entered.
ggplot(eq_china_cleandata, aes( x = DATE, y = as.factor(COUNTRY))) + geom_timeline( x_min = "1800-01-01", x_max = "2015-01-01")
quaketimelinelabel_plot(eq_china_cleandata, "1800-01-01","2015-01-01", 3)
Again, going directly to the underlying function geom_timelinelabel
is
possible if a little more flexibility is required.
ggplot(eq_china_cleandata, aes( x = DATE, y = as.factor(COUNTRY))) + geom_timeline( x_min = "1800-01-01", x_max = "2015-01-01") + geom_timelinelabel(ggplot2::aes_(magnitude = quote(EQ_PRIMARY), label = quote(LOCATION_NAME), col = NULL), x_min = "1800-01-01", x_max = "2015-01-01", n_max = 3)
The second kind of visualization plots the epicenters of the selected earthquakes on a map. The epicenters diameter will represent the magnitude of the earthquake, with the each data point showing further information when you click on it. The first graph will present the date of the earthquake when you click on it. The second will offer more detail, with location and magnitude.
eq_map(eq_china_cleandata, "DATE")
eq_clean_data(eq_test_data) %>% dplyr::filter(COUNTRY == "TURKEY" & lubridate::year(DATE) >= 1500) %>% dplyr::mutate(popup_text = eq_create_label(.)) %>% eq_map(annot_col = "popup_text")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.