test_that("standard alignment works", {
df <- tibble::tribble(
~g, ~x, ~y,
"a", 1, 2,
"a", 3, 5,
"a", 5, 1,
"b", 2, 3,
"b", 4, 6,
"b", 6, 7
)
p <- ggplot(df, aes(x, y, fill = g)) + geom_area(color = "black")
expect_doppelganger("align two areas", p)
})
test_that("alignment with cliffs works", {
df <- tibble::tribble(
~g, ~x, ~y,
"a", 1, 2,
"a", 3, 5,
"a", 5, 1,
"b", 2, 3,
"b", 4, 3,
"b", 4, 6,
"b", 6, 7
)
p <- ggplot(df, aes(x, y, fill = g)) + geom_area(color = "black")
expect_doppelganger("align two areas with cliff", p)
})
test_that("alignment with negative and positive values works", {
df <- tibble::tribble(
~g, ~x, ~y,
"a", 1, 1,
"a", 2, 4,
"a", 3, -4,
"a", 8, 0,
"b", 2, 4,
"b", 6, -4
)
p <- ggplot(df, aes(x, y, fill = g)) + geom_area(color = "black")
expect_doppelganger("align two areas with pos/neg y", p)
})
test_that("alignment adjusts per panel", {
# In particular, the adjustment (small offset used) should take panel-wise
# data into account (#5227)
df <- data_frame0(
x = c(0, 1, 1000, 1001),
y = c(-1, 1, -1, 1),
g = c("A", "A", "B", "B")
)
p <- ggplot(df, aes(x, y))
# Here, x-range is large, so adjustment should be larger
ld <- layer_data(p + geom_area(aes(fill = g)))
expect_equal(diff(ld$x[1:2]), 1/6, tolerance = 1e-4)
# Here, x-ranges are smaller, so adjustment should be smaller instead of
# considering the data as a whole
ld <- layer_data(p + geom_area() + facet_wrap(vars(g), scales = "free_x"))
expect_equal(diff(ld$x[1:2]), 1e-3, tolerance = 1e-4)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.