У меня есть много функций, которые генерируют графики, обычно с ggplot2. Сейчас я создаю сюжет и тестирую основные данные. Но я хотел бы знать, есть ли разумный способ проверить, что сюжет содержит слои/варианты, которые я ожидаю, или что графические элементы соответствуют ожиданиям.Как написать тест для графика ggplot
Например:
library(ggplot2)
library(scales) # for percent()
library(testthat)
df <- data.frame(
Response = LETTERS[1:5],
Proportion = c(0.1,0.2,0.1,0.2,0.4)
)
#' @export plot_fun
plot_fun <- function(df) {
p1 <- ggplot(df, aes(Response, Proportion)) +
geom_bar(stat='identity') +
scale_y_continuous(labels = percent)
return(p1)
}
test_that("Plot returns ggplot object",{
p <- plot_fun(df)
expect_is(p,"ggplot")
})
test_that("Plot uses correct data", {
p <- plot_fun(df)
expect_that(df, equals(p$data))
})
Это где я застрял
test_that("Plot layers match expectations",{
p <- plot_fun(df)
expect_that(...,...)
})
test_that("Scale is labelled percent",{
p <- plot_fun(df)
expect_that(...,...)
})
Может быть, есть более прямой подход?
ggplot2 [репо] (https://github.com/hadley/ggplot2/blob/master/tests/test-all.R) не имеет тестов, поэтому, возможно, это не реализовано? Было бы неплохо. – jeremycg
Я знаю, следовательно, вопрос - и входящую награду. –
[Это] (https://github.com/wch/ggplot2/wiki) может быть полезным, хотя я не уверен, насколько развит набор визуальных тестов с момента его внедрения. – joran