data(nasa)
nasaLate <- nasa[
nasa$date >= as.POSIXct("1998-01-01") &
nasa$lat >= 20 &
nasa$lat <= 40 &
nasa$long >= -80 &
nasa$long <= -60,
]
do_glyph <- function(...) {
glyphs(
nasaLate, # no lint
"long", "day", "lat", "surftemp",
height = 2.37, width = 2.38, ...
)
}
do_gg <- function(dt) {
ggplot2::ggplot(dt, ggplot2::aes(gx, gy, group = gid)) + # nolint
add_ref_lines(dt, color = "red", size = 0.5) +
add_ref_boxes(dt, color = "blue") +
ggplot2::geom_path() +
ggplot2::theme_bw() +
ggplot2::labs(x = "", y = "") +
ggplot2::xlim(-80, -60) +
ggplot2::ylim(20, 40)
}
test_that("examples", {
dt <- do_glyph()
expect_true(all(c("gx", "gy", "gid") %in% names(dt)))
expect_true(all(names(nasaLate) %in% names(dt)))
p <- do_gg(dt)
expect_equal(length(p$layers), 3)
expect_equal(as.character(get("aes_params", envir = p$layers[[1]])$colour), "red")
expect_equal(as.character(get("aes_params", envir = p$layers[[2]])$colour), "blue")
})
test_that("message", {
expect_message(glyphs(nasaLate, "long", "day", "lat", "surftemp", height = 1), "Using width 2.38")
expect_message(glyphs(nasaLate, "long", "day", "lat", "surftemp", width = 1), "Using height 2.37")
})
test_that("scales", {
dt <- do_glyph(x_scale = log)
dt$dayLog <- dt$day
dt$day <- NULL
dtm <- merge(dt, nasaLate)
expect_true(all(dtm$dayLog == log(dtm$day)))
dt <- do_glyph(y_scale = log)
dt$surftempLog <- dt$surftemp
dt$surftemp <- NULL
dtm <- merge(dt, nasaLate)
expect_true(all(dtm$surftempLog == log(dtm$surftemp)))
for (scale_fn in c(range01, max1, mean0, min0, rescale01, rescale11)) {
dt <- do_glyph(y_scale = scale_fn)
dt$surftempScaled <- dt$surftemp
dt$surftemp <- NULL
dtm <- merge(dt, nasaLate)
expect_true(all(dtm$surftempScaled != dtm$surftemp))
}
for (scale_fn in c(rescale01, rescale11)) {
scale_fn2 <- function(x) {
scale_fn(x, xlim = c(1 / 4, 3 / 4))
}
dt <- do_glyph(y_scale = scale_fn2)
dt$surftempScaled <- dt$surftemp
dt$surftemp <- NULL
dtm <- merge(dt, nasaLate)
expect_true(all(dtm$surftempScaled != dtm$surftemp))
}
})
test_that("polar", {
dt <- do_glyph(polar = TRUE)
expect_equal(attr(dt, "polar"), TRUE)
# idk how to test that polar happened
p <- do_gg(dt)
expect_equal(length(p$layers), 3)
})
test_that("fill", {
dt <- do_glyph()
# idk how to test that polar happened
do_gg_fill <- function(...) {
ggplot2::ggplot(dt, ggplot2::aes(gx, gy, group = gid)) +
add_ref_lines(dt, color = "red", size = 0.5) +
add_ref_boxes(dt, color = "blue", ...) +
ggplot2::geom_path() +
ggplot2::theme_bw() +
ggplot2::labs(x = "", y = "") +
ggplot2::xlim(-80, -60) +
ggplot2::ylim(20, 40)
}
p <- do_gg_fill(fill = "green")
expect_equal(mapping_string(get("aes_params", envir = p$layers[[2]])$fill), "\"green\"")
p <- do_gg_fill(var_fill = "gid")
expect_equal(mapping_string(get("mapping", envir = p$layers[[2]])$fill), "fill")
})
test_that("print", {
dt <- do_glyph()
txt <- capture.output(print(dt))
expect_equal(txt[length(txt) - 2], "Cartesian glyphplot: ")
expect_equal(txt[length(txt) - 1], " Size: [2.38, 2.37]")
expect_equal(txt[length(txt) - 0], " Major axes: long, lat")
dt <- do_glyph(polar = TRUE)
txt <- capture.output(print(dt))
expect_equal(txt[length(txt) - 2], "Polar glyphplot: ")
expect_equal(txt[length(txt) - 1], " Size: [2.38, 2.37]")
expect_equal(txt[length(txt) - 0], " Major axes: long, lat")
txt <- capture.output(print(rel(0.95)))
expect_equal(txt, "[1] 0.95 *")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.