Introducing the nascent R package {blimey}
(repository). At this stage it contains only the following data:
railways
— latitude and longitude segments along railway lines (wide format);railways_pivot
— latitude and longitude segments along railway lines (long format); andrailway_stations
— codes, names and locations of railway stations.
Load a couple of core packages.
library(dplyr)
library(ggmap)
Load the {blimey}
package.
library(blimey)
Let’s take a look at the railways
data.
head(railways)
# A tibble: 6 × 7
fid elr trid lat_start lat_end lon_end lon_start
<dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0 MLN3 1100 50.3 50.3 -5.06 -4.83
2 1 SDS 3100 50.3 50.3 -4.83 -4.83
3 2 MLN3 1600 50.3 50.3 -5.07 -5.07
4 3 MLN4 3700 50.2 50.2 -5.45 -5.45
5 4 MLN4 3601 50.1 50.1 -5.53 -5.53
6 5 MLN4 1100 50.2 50.1 -5.50 -5.45
We’re going to plot those data out on a map. Define the bounding box for the map.
bb <- c(left = -8, bottom = 49.80, right = 3, top = 59.50)
Use {ggmap}
to load Stamen Map tiles for the toner lite map.
map_toner <- get_stamenmap(bb, zoom = 8, maptype = "toner-lite")
Define some colours for plotting the lines and stations.
COLOUR_MUTED_BLUE <- "#1f77b4"
COLOUR_SAFETY_ORANGE <- "#ff7f0e"
Create a function which will tweak the map appearance.
theme_map <- function(plot) {
plot +
coord_map() +
scale_x_continuous(expand = expansion(0, 0)) +
scale_y_continuous(expand = expansion(0, 0)) +
theme(
legend.position = "none",
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
text = element_text(size = 12)
)
}
Show the railway line segments over the toner lite map.
map <- ggmap(map_toner, extent = "normal") +
geom_segment(
data = railways,
aes(
x = lon_start,
y = lat_start,
xend = lon_end,
yend = lat_end,
),
size = 1, alpha = 0.5, col = COLOUR_MUTED_BLUE
)
(map <- theme_map(map))
Now add in the railway stations.
(ggmap(map_toner, extent = "normal") +
geom_segment(
data = railways,
aes(
x = lon_start,
y = lat_start,
xend = lon_end,
yend = lat_end
),
size = 2, alpha = 0.5, col = COLOUR_MUTED_BLUE
) +
geom_point(
data = railway_stations,
aes(
x = lon,
y = lat
),
size = 2, alpha = 0.5, col = COLOUR_SAFETY_ORANGE
)) %>%
theme_map()
A larger version of the map can be found here.