# test cases are based on:
# http://www.maths.lancs.ac.uk/~rowlings/Teaching/UseR2012/cheatsheet.html
test_that('test fortify.SpatialPoints', {
skip_if_not_installed("sp")
library(sp)
x <- c(1, 2, 3, 4)
y <- c(5, 6, 7, 8)
# SpatialPoints
coords <- cbind(x, y)
sp <- SpatialPoints(coords)
exp <- data.frame(long = c(1, 2, 3, 4), lat = c(5, 6, 7, 8))
res <- fortify(sp)
expect_true(is.data.frame(res))
expect_equal(colnames(res), c('long', 'lat'))
expect_equal(res$long, exp$long)
expect_equal(res$lat, exp$lat)
expect_equal(attr(res, 'base_class')[[1]], 'SpatialPoints')
res <- fortify(sp, rename = FALSE)
expect_true(is.data.frame(res))
expect_equal(colnames(res), c('x', 'y'))
expect_equal(res$x, exp$long)
expect_equal(res$y, exp$lat)
expect_equal(attr(res, 'base_class')[[1]], 'SpatialPoints')
# SpatialPointsDataFrame
data <- data.frame(city = c('a', 'b', 'c', 'd'))
spdf <- SpatialPointsDataFrame(coords, data)
res <- fortify(spdf)
exp <- data.frame(city = c('a', 'b', 'c', 'd'),
long = c(1, 2, 3, 4), lat = c(5, 6, 7, 8))
expect_true(is.data.frame(res))
expect_equal(colnames(res), c('city', 'long', 'lat'))
expect_equal(res$city, exp$city)
expect_equal(res$long, exp$long)
expect_equal(res$lat, exp$lat)
expect_equal(attr(res, 'base_class')[[1]], 'SpatialPointsDataFrame')
coordinates(data) <- cbind(x, y)
expect_true(is(data, 'SpatialPointsDataFrame'))
res <- fortify(data, rename = FALSE)
expect_true(is.data.frame(res))
expect_equal(colnames(res), c('city', 'x', 'y'))
expect_equal(res$city, exp$city)
expect_equal(res$x, exp$long)
expect_equal(res$y, exp$lat)
expect_equal(attr(res, 'base_class')[[1]], 'SpatialPointsDataFrame')
res <- fortify(data)
expect_true(is.data.frame(res))
expect_equal(colnames(res), c('city', 'long', 'lat'))
expect_equal(res$city, exp$city)
expect_equal(res$long, exp$long)
expect_equal(res$lat, exp$lat)
expect_equal(attr(res, 'base_class')[[1]], 'SpatialPointsDataFrame')
# coordinates with custom names
data <- data.frame(city = c('a', 'b', 'c', 'd'),
mylon = c(1, 2, 3, 4), mylat = c(5, 6, 7, 8))
coordinates(data) <- ~ mylon + mylat
res <- fortify(data, rename = FALSE)
expect_true(is.data.frame(res))
expect_equal(colnames(res), c('city', 'mylon', 'mylat'))
expect_equal(res$city, exp$city)
expect_equal(res$mylon, exp$long)
expect_equal(res$mylat, exp$lat)
expect_equal(attr(res, 'base_class')[[1]], 'SpatialPointsDataFrame')
res <- fortify(data)
expect_true(is.data.frame(res))
expect_equal(colnames(res), c('city', 'long', 'lat'))
expect_equal(res$city, exp$city)
expect_equal(res$long, exp$long)
expect_equal(res$lat, exp$lat)
expect_equal(attr(res, 'base_class')[[1]], 'SpatialPointsDataFrame')
})
test_that('test fortify.Line, Lines', {
skip_if_not_installed("sp")
library(sp)
x1 <- c(1, 2, 3, 4)
y1 <- c(5, 6, 7, 8)
x2 <- c(11, 12, 13)
y2 <- c(15, 16, 17)
x3 <- c(9, 8, 7)
y3 <- c(6, 5, 4)
l1 <- Line(cbind(x1, y1))
l2 <- Line(cbind(x2, y2))
l3 <- Line(cbind(x3, y3))
# defined in ggplot2::fortify.Line
exp <- data.frame(long = c(1, 2, 3, 4), lat = c(5, 6, 7, 8),
order = c(1, 2, 3, 4))
res <- fortify(l1)
expect_true(is.data.frame(res))
expect_equal(res, exp)
# Lines
ls1 <- Lines(list(l1), ID = "ls1")
ls23 <- Lines(list(l2, l3), ID = "ls23")
# defined in ggplot2::fortify.Lines
exp <- data.frame(long = c(1, 2, 3, 4), lat = c(5, 6, 7, 8),
order = c(1, 2, 3, 4),
piece = as.factor(c(1, 1, 1, 1)),
id = rep('ls1', 4),
group = as.factor(rep('ls1.1', 4)),
stringsAsFactors = FALSE)
res <- fortify(ls1)
expect_true(is.data.frame(res))
expect_equal(res, exp)
exp <- data.frame(long = c(11, 12, 13, 9, 8, 7), lat = c(15, 16, 17, 6, 5, 4),
order = c(1, 2, 3, 4, 5, 6),
piece = as.factor(c(1, 1, 1, 2, 2, 2)),
id = rep('ls23', 6),
group = as.factor(rep(c('ls23.1', 'ls23.2'), c(3, 3))),
stringsAsFactors = FALSE)
res <- fortify(ls23)
expect_true(is.data.frame(res))
expect_equal(res, exp)
# SpatialLines, result must have "base_class"
sl1 <- SpatialLines(list(ls1))
sl12 <- SpatialLines(list(ls1, ls23))
res <- fortify(sl1)
expect_true(is.data.frame(res))
expect_equal(res$long, c(1, 2, 3, 4))
expect_equal(res$lat, c(5, 6, 7, 8))
expect_equal(res$order, c(1, 2, 3, 4))
expect_equal(res$piece, as.factor(c(1, 1, 1, 1)))
expect_equal(res$id, rep('ls1', 4))
expect_equal(res$group, as.factor(rep('ls1.1', 4)))
expect_equal(attr(res, 'base_class')[[1]], 'SpatialLines')
res <- fortify(sl12)
expect_true(is.data.frame(res))
expect_equal(res$long, c(1, 2, 3, 4, 11, 12, 13, 9, 8, 7))
expect_equal(res$lat, c(5, 6, 7, 8, 15, 16, 17, 6, 5, 4))
expect_equal(res$order, c(1, 2, 3, 4, 1, 2, 3, 4, 5, 6))
expect_equal(res$piece, as.factor(c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2)))
expect_equal(res$id, rep(c('ls1', 'ls23'), c(4, 6)))
expect_equal(res$group, as.factor(rep(c('ls1.1', 'ls23.1', 'ls23.2'), c(4, 3, 3))))
expect_equal(attr(res, 'base_class')[[1]], 'SpatialLines')
# defined in ggplot2::fortify.SpatialLinesDataFrame
sldf <- SpatialLinesDataFrame(sl12,
data.frame(Z = c("Road", "River"),
row.names = c("ls1", "ls23")))
res <- fortify(sl12)
expect_true(is.data.frame(res))
expect_equal(res$long, c(1, 2, 3, 4, 11, 12, 13, 9, 8, 7))
expect_equal(res$lat, c(5, 6, 7, 8, 15, 16, 17, 6, 5, 4))
expect_equal(res$order, c(1, 2, 3, 4, 1, 2, 3, 4, 5, 6))
expect_equal(res$piece, as.factor(c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2)))
expect_equal(res$id, rep(c('ls1', 'ls23'), c(4, 6)))
expect_equal(res$group, as.factor(rep(c('ls1.1', 'ls23.1', 'ls23.2'), c(4, 3, 3))))
expect_equal(attr(res, 'base_class')[[1]], 'SpatialLines')
})
test_that('test fortify.Polygon, Polygons', {
skip_if_not_installed("sp")
library(sp)
x1 <- c(1, 1, 2, 2, 1)
y1 <- c(1, 2, 2, 1, 1)
r1 <- cbind(x1, y1)
p1 <- Polygon(r1)
ps1 <- Polygons(list(p1), ID = "a")
x2 <- c(3, 3, 4, 4, 3)
y2 <- c(3, 4, 4, 3, 3)
r2 <- cbind(x2, y2)
p2 <- Polygon(r2)
ps2 <- Polygons(list(p2), ID = "b")
# defined in ggplot2
exp <- data.frame(long = c(1, 1, 2, 2, 1),
lat = c(1, 2, 2, 1, 1),
order = c(1, 2, 3, 4, 5),
hole = rep(FALSE, 5))
res <- fortify(p1)
expect_true(is.data.frame(res))
expect_equal(res, exp)
exp <- data.frame(long = c(1, 1, 2, 2, 1),
lat = c(1, 2, 2, 1, 1),
order = c(1, 2, 3, 4, 5),
hole = rep(FALSE, 5),
piece = as.factor(rep(1, 5)),
id = rep('a', 5),
group = as.factor(rep('a.1', 5)),
stringsAsFactors = FALSE)
res <- fortify(ps1)
expect_true(is.data.frame(res))
expect_equal(res, exp)
# SpatialPolygons
sps <- SpatialPolygons(list(ps1, ps2))
# defined in ggplot2
exp <- data.frame(long = c(1, 1, 2, 2, 1, 3, 3, 4, 4, 3),
lat = c(1, 2, 2, 1, 1, 3, 4, 4, 3, 3),
order = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5),
hole = rep(FALSE, 10),
piece = as.factor(rep(1, 10)),
id = rep(c('a', 'b'), c(5, 5)),
group = as.factor(rep(c('a.1', 'b.1'), c(5, 5))),
stringsAsFactors = FALSE)
res <- fortify(sps)
expect_true(is.data.frame(res))
expect_equal(res, exp)
# SpatialPolugonsDataFrame
spdf <- SpatialPolygonsDataFrame(sps, data.frame(N = c("one", "two"),
row.names = c("a", "b")))
# defined in ggplot2
exp <- data.frame(long = c(1, 1, 2, 2, 1, 3, 3, 4, 4, 3),
lat = c(1, 2, 2, 1, 1, 3, 4, 4, 3, 3),
order = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5),
hole = rep(FALSE, 10),
piece = as.factor(rep(1, 10)),
id = rep(c('a', 'b'), c(5, 5)),
group = as.factor(rep(c('a.1', 'b.1'), c(5, 5))),
stringsAsFactors = FALSE)
res <- fortify(sps)
expect_true(is.data.frame(res))
expect_equal(res, exp)
})
test_that('test autoplot.SpatialPoints', {
skip_if_not_installed("sp")
library(sp)
x <- c(1, 2, 3, 4)
y <- c(5, 6, 7, 8)
# SpatialPoints
coords <- cbind(x, y)
sp <- SpatialPoints(coords)
p <- autoplot(sp)
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomPoint'))
ld <- head(ggplot2:::layer_data(p, 1))
expect_equal(ld$x, c(1, 2, 3, 4))
expect_equal(ld$y, c(5, 6, 7, 8))
expect_equal(ld$colour, rep('black', 4))
expect_equal(ld$alpha, rep(NA, 4))
data <- data.frame(col1 = c('a', 'b', 'a', 'a'))
spdf <- SpatialPointsDataFrame(coords, data)
p <- autoplot(spdf, colour = 'col1')
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomPoint'))
ld <- head(ggplot2:::layer_data(p, 1))
expect_equal(ld$x, c(1, 2, 3, 4))
expect_equal(ld$y, c(5, 6, 7, 8))
expect_equal(ld$colour, c("#F8766D", "#00BFC4", "#F8766D", "#F8766D"))
expect_equal(ld$alpha, rep(NA, 4))
})
test_that('test autoplot.Line, Lines', {
skip_if_not_installed("sp")
library(sp)
x1 <- c(1, 2, 3, 4)
y1 <- c(5, 6, 7, 8)
x2 <- c(11, 12, 13)
y2 <- c(15, 16, 17)
x3 <- c(9, 8, 7)
y3 <- c(6, 5, 4)
l1 <- Line(cbind(x1, y1))
l2 <- Line(cbind(x2, y2))
l3 <- Line(cbind(x3, y3))
ls1 <- Lines(list(l1), ID = "ls1")
ls23 <- Lines(list(l2, l3), ID = "ls23")
p <- autoplot(l1)
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomLine'))
ld <- head(ggplot2:::layer_data(p, 1))
expect_equal(ld$x, c(1, 2, 3, 4))
expect_equal(ld$y, c(5, 6, 7, 8))
expect_equal(ld$colour, rep('black', 4))
expect_equal(ld$alpha, rep(NA, 4))
# Lines
p <- autoplot(ls1)
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomLine'))
ld <- head(ggplot2:::layer_data(p, 1))
expect_equal(ld$x, c(1, 2, 3, 4))
expect_equal(ld$y, c(5, 6, 7, 8))
expect_equal(ld$colour, rep('black', 4))
expect_equal(ld$alpha, rep(NA, 4))
# Lines with group
p <- autoplot(ls23)
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomLine'))
ld <- head(ggplot2:::layer_data(p, 1))
expect_equal(ld$x, c(11, 12, 13, 7, 8, 9))
expect_equal(ld$y, c(15, 16, 17, 4, 5, 6))
expect_equal(ld$group, c(1, 1, 1, 2, 2, 2))
expect_equal(ld$colour, rep('black', 6))
expect_equal(ld$alpha, rep(NA, 6))
# Lines with group
p <- autoplot(ls23, colour = 'group')
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomLine'))
ld <- head(ggplot2:::layer_data(p, 1))
expect_equal(ld$x, c(11, 12, 13, 7, 8, 9))
expect_equal(ld$y, c(15, 16, 17, 4, 5, 6))
expect_equal(ld$group, c(1, 1, 1, 2, 2, 2))
expect_equal(ld$colour, rep(c("#F8766D", "#00BFC4"), c(3, 3)))
expect_equal(ld$alpha, rep(NA, 6))
# add layer
p <- autoplot(ls1, p = p)
expect_equal(length(p$layers), 2)
expect_true(is(p$layers[[2]]$geom, 'GeomLine'))
# SpatialLines, result must be the same as Lines,
sl1 <- SpatialLines(list(ls1))
sl12 <- SpatialLines(list(ls1, ls23))
p <- autoplot(sl1)
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomLine'))
ld <- head(ggplot2:::layer_data(p, 1))
expect_equal(ld$x, c(1, 2, 3, 4))
expect_equal(ld$y, c(5, 6, 7, 8))
expect_equal(ld$colour, rep('black', 4))
expect_equal(ld$alpha, rep(NA, 4))
p <- autoplot(sl12, colour = 'group')
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomLine'))
ld <- ggplot2:::layer_data(p, 1)
expect_equal(ld$x, c(1, 2, 3, 4, 11, 12, 13, 7, 8, 9))
expect_equal(ld$y, c(5, 6, 7, 8, 15, 16, 17, 4, 5, 6))
expect_equal(ld$group, c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3))
expect_equal(ld$colour, rep(c("#F8766D", "#00BA38", "#619CFF"), c(4, 3, 3)))
expect_equal(ld$alpha, rep(NA, 10))
# defined in ggplot2::fortify.SpatialLinesDataFrame
sldf <- SpatialLinesDataFrame(sl12,
data.frame(Z = c("Road", "River"),
row.names = c("ls1", "ls23")))
p <- autoplot(sldf, colour = 'group')
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomLine'))
ld <- ggplot2:::layer_data(p, 1)
expect_equal(ld$x, c(1, 2, 3, 4, 11, 12, 13, 7, 8, 9))
expect_equal(ld$y, c(5, 6, 7, 8, 15, 16, 17, 4, 5, 6))
expect_equal(ld$group, c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3))
expect_equal(ld$colour, rep(c("#F8766D", "#00BA38", "#619CFF"), c(4, 3, 3)))
expect_equal(ld$alpha, rep(NA, 10))
p <- autoplot(sldf, colour = 'Z')
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomLine'))
ld <- ggplot2:::layer_data(p, 1)
expect_equal(ld$x, c(1, 2, 3, 4, 11, 12, 13, 7, 8, 9))
expect_equal(ld$y, c(5, 6, 7, 8, 15, 16, 17, 4, 5, 6))
expect_equal(ld$group, c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3))
expect_equal(ld$colour, rep(c("#00BFC4", "#F8766D"), c(4, 6)))
expect_equal(ld$alpha, rep(NA, 10))
})
test_that('test autoplot.Polygon, Polygons', {
skip_if_not_installed("sp")
library(sp)
x1 <- c(1, 1, 2, 2, 1)
y1 <- c(1, 2, 2, 1, 1)
r1 <- cbind(x1, y1)
p1 <- Polygon(r1)
ps1 <- Polygons(list(p1), ID = "a")
x2 <- c(3, 3, 4, 4, 3)
y2 <- c(3, 4, 4, 3, 3)
r2 <- cbind(x2, y2)
p2 <- Polygon(r2)
ps2 <- Polygons(list(p2), ID = "b")
p <- autoplot(p1)
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomPolygon'))
ld <- head(ggplot2:::layer_data(p, 1))
expect_equal(ld$x, c(1, 1, 2, 2, 1))
expect_equal(ld$y, c(1, 2, 2, 1, 1))
expect_equal(ld$colour, rep('black', 5))
expect_equal(ld$fill, rep('grey20', 5))
expect_equal(ld$alpha, rep(NA, 5))
p <- autoplot(ps1)
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomPolygon'))
ld <- head(ggplot2:::layer_data(p, 1))
expect_equal(ld$x, c(1, 1, 2, 2, 1))
expect_equal(ld$y, c(1, 2, 2, 1, 1))
expect_equal(ld$colour, rep('black', 5))
expect_equal(ld$fill, rep('grey20', 5))
expect_equal(ld$alpha, rep(NA, 5))
# SpatialPolygons
sps <- SpatialPolygons(list(ps1, ps2))
p <- autoplot(sps)
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomPolygon'))
ld <- ggplot2:::layer_data(p, 1)
expect_equal(ld$x, c(1, 1, 2, 2, 1, 3, 3, 4, 4, 3))
expect_equal(ld$y, c(1, 2, 2, 1, 1, 3, 4, 4, 3, 3))
expect_equal(ld$colour, rep('black', 10))
expect_equal(ld$fill, rep('grey20', 10))
expect_equal(ld$alpha, rep(NA, 10))
p <- autoplot(sps, fill = 'group')
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomPolygon'))
ld <- ggplot2:::layer_data(p, 1)
expect_equal(ld$x, c(1, 1, 2, 2, 1, 3, 3, 4, 4, 3))
expect_equal(ld$y, c(1, 2, 2, 1, 1, 3, 4, 4, 3, 3))
expect_equal(ld$colour, rep('black', 10))
expect_equal(ld$fill, rep(c('#F8766D', '#00BFC4'), c(5, 5)))
expect_equal(ld$alpha, rep(NA, 10))
# SpatialPolugonsDataFrame
spdf <- SpatialPolygonsDataFrame(sps, data.frame(N = c("one", "two"),
row.names = c("a", "b")))
p <- autoplot(spdf)
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomPolygon'))
ld <- ggplot2:::layer_data(p, 1)
expect_equal(ld$x, c(1, 1, 2, 2, 1, 3, 3, 4, 4, 3))
expect_equal(ld$y, c(1, 2, 2, 1, 1, 3, 4, 4, 3, 3))
expect_equal(ld$colour, rep('black', 10))
expect_equal(ld$fill, rep('grey20', 10))
expect_equal(ld$alpha, rep(NA, 10))
p <- autoplot(spdf, fill = 'N')
expect_equal(length(p$layers), 1)
expect_true(is(p$layers[[1]]$geom, 'GeomPolygon'))
ld <- ggplot2:::layer_data(p, 1)
expect_equal(ld$x, c(1, 1, 2, 2, 1, 3, 3, 4, 4, 3))
expect_equal(ld$y, c(1, 2, 2, 1, 1, 3, 4, 4, 3, 3))
expect_equal(ld$colour, rep('black', 10))
expect_equal(ld$fill, rep(c('#F8766D', '#00BFC4'), c(5, 5)))
expect_equal(ld$alpha, rep(NA, 10))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.