context("test serialaxes")
library(tidyverse)
library(ggmulti)
pdf(NULL)
test_that("test serialaxes", {
mapping <- aes(
Sepal.Length = Sepal.Length,
Sepal.Width = Sepal.Width,
Petal.Length = Petal.Length,
Petal.Width = Petal.Width,
Species = Species
)
######## parallel
# test athetics colour, size, ...
p <- ggplot(iris,
mapping = mapping) +
geom_serialaxes() +
geom_serialaxes_hist() +
geom_serialaxes_density(positive = FALSE, color = "red") +
geom_serialaxes_quantile(color = "blue")
b <- ggplot_build(p)
expect_equal(b$plot$layers[[3]]$aes_params$colour, "red")
# check mapping aesthetics
p <- ggplot(iris,
mapping = mapping) +
geom_serialaxes(mapping = aes(colour = Species)) +
geom_serialaxes_hist(positive = FALSE, mapping = aes(fill = Species)) +
geom_serialaxes_density(color = "red") +
geom_serialaxes_quantile(color = "blue")
b <- ggplot_build(p)
expect_equal(length(unique(b$data[[1]]$colour)), 3)
expect_equal(length(unique(b$data[[2]]$fill)), 3)
expect_false(b$plot$layers[[2]]$geom_params$positive)
})
test_that("test coord_serialaxes", {
mapping <- aes(
Sepal.Length = Sepal.Length,
Sepal.Width = Sepal.Width,
Petal.Length = Petal.Length,
Petal.Width = Petal.Width,
Species = Species
)
######## parallel
# coord_serialaxes
p <- ggplot(iris, mapping = mapping) +
geom_path(mapping = aes(colour = Species)) +
coord_serialaxes(axes.position = c(1,5,7,9, 10))
b <- ggplot_build(p)
expect_equal(unique(b$data[[1]]$x), c(1,5,7,9, 10))
q <- p +
geom_density() +
geom_histogram(fill = "blue") +
geom_quantiles(colour = "red")
b <- ggplot_build(q)
expect_equal(b$plot$layers[[3]]$aes_params$fill, "blue")
expect_equal(b$plot$layers[[4]]$aes_params$colour, "red")
## radial axes
q <- p + coord_serialaxes(axes.layout = "radial")
b <- ggplot_build(q)
expect_true("CoordPolar" %in% class(b$plot$coordinates))
# flip axes
p <- ggplot(iris, mapping = aes(colour = Species)) +
geom_path(alpha = 0.2) +
geom_density(alpha = 0.5) +
geom_histogram(fill = "blue", alpha = 0.3, position = "dodge2_") +
geom_quantiles(colour = "red") +
coord_serialaxes(axes.sequence = colnames(iris),
axes.position = c(1,5,7,9, 10), orientation = "x")
b <- ggplot_build(p)
expect_true("PositionIdentity_" %in% class(b$plot$layers[[2]]$position))
expect_true("PositionDodge2_" %in% class(b$plot$layers[[3]]$position))
# Legendre transformation
p <- ggplot(iris, mapping = aes(colour = Species)) +
geom_path(stat = "dotProduct", axes.sequence = colnames(iris),
transform = legendre, scaling = "data") +
coord_serialaxes(orientation = "x")
b <- ggplot_build(p)
expect_true(all(c("StatDotProduct", "StatSerialaxes") %in% class(b$plot$layers[[1]]$stat)))
# axes.sequence
ggplot(iris,
mapping = aes(colour = factor(Species))) +
geom_path(alpha = 0.2,
axes.sequence = colnames(iris)[-5],
stat = "serialaxes") +
geom_density(alpha = 0.8,
axes.sequence = colnames(iris)[c(1,3)],
stat = "serialaxesDensity") +
coord_serialaxes() -> p
b <- ggplot_build(p)
expect_equal(unique(floor(b$data[[2]]$x)), c(1, 3))
# histogram
### parallel
ggplot(iris) +
geom_path(alpha = 0.2) +
geom_histogram(alpha = 0.8,
mapping = aes(fill = factor(Species))) +
coord_serialaxes(axes.sequence = colnames(iris)) -> p
x <- ggplot_build(p)
expect_equal(length(x$plot$layers), 2)
expect_true("CoordSerialaxes" %in% class(p$coordinates))
### radial
p$coordinates$axes.layout <- "radial"
x <- ggplot_build(p)
expect_true("CoordPolar" %in% class(x$plot$coordinates))
})
test_that("fourier transformation dot product", {
coords <- andrews(p = 4)
expect_equal(round(range(coords$vector), 2), c(-3.14, 3.14))
expect_equal(dim(coords$matrix), c(4, 150))
})
test_that("test duplicated axes", {
########## set mapping
expect_warning(
mapping <- aes(
Sepal.Length = Sepal.Length,
Sepal.Width = Sepal.Width,
Sepal.Length = Sepal.Length,
Sepal.Width = Sepal.Width,
Species = Species
)
)
p <- ggplot(iris, mapping = mapping) +
geom_path() +
coord_serialaxes()
b <- ggplot_build(p)
expect_equal(unique(b$data[[1]]$x), 1:5)
p <- ggplot(iris, mapping = mapping) +
geom_serialaxes()
b <- ggplot_build(p)
expect_equal(unique(b$data[[1]]$x), 1:3)
#### mapping in layer
mapping <- aes(
Sepal.Length = Sepal.Length,
Sepal.Width = Sepal.Width
)
expect_warning(
p <- ggplot(iris, mapping = mapping) +
geom_path(mapping = aes(
Sepal.Length = Sepal.Length,
Sepal.Width = Sepal.Width,
Species = Species
)) +
coord_serialaxes()
)
b <- ggplot_build(p)
expect_equal(unique(b$data[[1]]$x), 1:3)
p <- ggplot(iris, mapping = mapping) +
geom_serialaxes(mapping = aes(
Sepal.Length = Sepal.Length,
Sepal.Width = Sepal.Width,
Species = Species
))
b <- ggplot_build(p)
expect_equal(unique(b$data[[1]]$x), 1:3)
#### check axes.sequence
p <- ggplot(iris, mapping = mapping) +
geom_serialaxes(axes.sequence = colnames(iris))
b <- ggplot_build(p)
expect_equal(unique(b$data[[1]]$x), 1:5)
p <- ggplot(iris, mapping = mapping) +
geom_path() +
coord_serialaxes(axes.sequence = colnames(iris))
b <- ggplot_build(p)
expect_equal(unique(b$data[[1]]$x), 1:5)
expect_warning(
p <- ggplot(iris) +
geom_path(mapping = mapping) +
coord_serialaxes(axes.sequence = colnames(iris)[-1])
)
b <- ggplot_build(p)
expect_equal(unique(b$data[[1]]$x), 1:4)
# test NAs
withNA <- ggplot(airquality,
mapping = aes(Ozone = Ozone,
Solar.R = Solar.R,
Wind = Wind,
Temp = Temp)) +
geom_path() +
geom_histogram() +
geom_density(color = "red") +
geom_quantiles(color = "blue") +
coord_serialaxes()
expect_warning(plot(withNA))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.