Nothing
test_that("minmax label placer", {
lines <- list(
"1" = list(x = c(.5, .75, .5, .25), y = c(.25, .5, .75, .5), id = rep(1, 4)),
"2" = list(x = c(.5, 1, .5, 0), y = c(0, .5, 1, .5), id = rep(1, 4))
)
labels_data <- data.frame(
index = 1:2,
break_index = c(3, 7),
break_id = c("1", "2"),
label = c("a", "b"),
stringsAsFactors = FALSE
)
lp <- label_placer_minmax(n = 0)
out <- lp(lines, labels_data)
expect_equal(out$index, rep(1:2, each = 2))
expect_equal(out$break_index, rep(c(3, 7), each = 2))
expect_equal(out$break_id, rep(c("1", "2"), each = 2))
expect_equal(out$label, rep(c("a", "b"), each = 2))
expect_equal(out$x, rep(0.5, 4))
expect_equal(out$y, c(0.75, 0.25, 1, 0))
expect_equal(out$theta, rep(0, 4))
lp <- label_placer_minmax(placement = "rl", rot_adjuster = angle_fixed(1.5), n = 0)
out <- lp(lines, labels_data)
expect_equal(out$x, c(0.25, 0.75, 0, 1))
expect_equal(out$y, rep(0.5, 4))
expect_equal(out$theta, rep(1.5, 4))
lp <- label_placer_minmax(placement = NULL)
out <- lp(lines, labels_data)
expect_equal(nrow(out), 0)
})
test_that("angle adjustments", {
theta <- c(-3, -2, -1, 0, 1, 2, 3)
expect_equal(
angle_halfcircle_bottom()(theta),
c(-3 + pi, -2 + pi, -1, 0, 1, 2 - pi, 3 - pi)
)
expect_equal(
angle_halfcircle_right()(theta + 2),
c(-1 + pi, 0 + pi, 1, 2, 3, 4 - pi, 5 - pi)
)
expect_equal(
angle_fixed()(theta),
rep(0, length(theta))
)
expect_equal(
angle_fixed(2)(theta),
rep(2, length(theta))
)
expect_equal(
angle_identity()(theta),
theta
)
})
test_that("none label placer", {
lines <- list(
"1" = list(x = c(.5, .75, .5, .25), y = c(.25, .5, .75, .5), id = rep(1, 4)),
"2" = list(x = c(.5, 1, .5, 0), y = c(0, .5, 1, .5), id = rep(1, 4))
)
labels_data <- data.frame(
index = 1:2,
break_index = c(3, 7),
break_id = c("1", "2"),
label = c("a", "b"),
stringsAsFactors = FALSE
)
lp <- label_placer_none()
out <- lp(lines, labels_data)
expect_equal(nrow(out), 0)
})
test_that("manual label placer", {
lines <- list(
"1" = list(x = c(.5, .75, .5, .25), y = c(.25, .5, .75, .5), id = rep(1, 4)),
"2" = list(x = c(.5, 1, .5, 0), y = c(0, .5, 1, .5), id = rep(1, 4))
)
labels_data <- data.frame(
index = 1:2,
break_index = c(3, 7),
break_id = c("1", "2"),
label = c("a", "b"),
stringsAsFactors = FALSE
)
lp <- label_placer_manual(
breaks = c("1", "2", "3", "2"),
x = 1:4,
y = 4:1,
theta = (1:4)-2
)
out <- lp(lines, labels_data)
expect_equal(out$index, c(1, 2, 2))
expect_equal(out$break_index, c(3, 7, 7))
expect_equal(out$break_id, c("1", "2", "2"))
expect_equal(out$label, c("a", "b", "b"))
expect_equal(out$x, c(1, 2, 4))
expect_equal(out$y, c(4, 3, 1))
expect_equal(out$theta, c(-1, 0, 2))
})
# Two isolines id=1
test_that("middle label placer", {
lines <- list(
"1" = list(x = c(.5, .75, .5, .25), y = c(.25, .5, .75, .5), id = rep(1, 4)),
"2" = list(x = c(.5, 1, .5, 0), y = c(0, .5, 1, .5), id = rep(1, 4))
)
labels_data <- data.frame(
index = 1:2,
break_index = c(3, 7),
break_id = c("1", "2"),
label = c("a", "b"),
stringsAsFactors = FALSE
)
lp <- label_placer_middle()
out <- lp(lines, labels_data)
expect_equal(out$index, 1:2)
expect_equal(out$break_index, c(3, 7))
expect_equal(out$break_id, c("1", "2"))
expect_equal(out$label, c("a", "b"))
expect_equal(out$x, c(0.75, 1))
expect_equal(out$y, c(0.5, 0.5))
expect_equal(out$theta, c(pi / 2, pi / 2))
})
# One isoline with two id values (1 and 2)
test_that("middle label placer", {
lines <- list(
"1" = list(x = c(.5, .75, .5, .25, .5, 1, .5, 0), y = c(.25, .5, .75, .5, 0, .5, 1, .5), id = c(rep(1, 4), rep(2, 4)))
)
labels_data <- data.frame(
index = 1,
break_index = 3,
break_id = "1",
label = "a",
stringsAsFactors = FALSE
)
lp <- label_placer_middle()
out <- lp(lines, labels_data)
expect_equal(out$index, c(1, 1))
expect_equal(out$break_index, c(3, 3))
expect_equal(out$break_id, c("1", "1"))
expect_equal(out$label, c("a", "a"))
expect_equal(out$x, c(0.75, 1))
expect_equal(out$y, c(0.5, 0.5))
expect_equal(out$theta, c(pi / 2, pi / 2))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.