test_that("lines are different from paths", { df <- data.frame( x = c(1, 3, 2), y = c(0, 0, 1) ) p <- qplot(x, y, data = df, geom = "path") info <- expect_doppelganger_built(p, "path-lines-diff-from-paths") expect_identical(info$data[[1]]$x[1:3], c(1, 3, 2)) expect_identical(info$data[[1]]$y[1:3], c(0, 0, 1)) }) two.paths <- data.frame( x = c(1, 2, 1, 2), y = c(1, 1, 2, 2) ) test_that("paths with different colors become different traces", { ## Numeric color. gg <- ggplot() + geom_path(aes(x, y, group = y, color = y), data = two.paths) info <- expect_doppelganger_built(gg, "path-colors") # one trace is for the colorbar expect_equivalent(length(info$data), 3) expect_identical(info$data[[1]]$x[1:2], c(1,2)) expect_identical(info$data[[2]]$x[1:2], c(1,2)) expect_identical(info$data[[1]]$y[1:2], c(1,1)) expect_identical(info$data[[2]]$y[1:2], c(2,2)) ## Categorical color. gg <- ggplot() + geom_path(aes(x, y, group = y, color = paste0("FOO", y)), data = two.paths) info <- expect_doppelganger_built(gg, "path-colors2") expect_equivalent(length(info$data), 2) expect_identical(info$data[[1]]$x[1:2], c(1,2)) expect_identical(info$data[[2]]$x[1:2], c(1,2)) expect_identical(info$data[[1]]$y[1:2], c(1,1)) expect_identical(info$data[[2]]$y[1:2], c(2,2)) }) four.paths <- rbind( data.frame(two.paths, g = "positive", stringsAsFactors = TRUE), data.frame(-two.paths, g = "negative", stringsAsFactors = TRUE) ) test_that("paths with the same color but different groups stay together", { gg <- ggplot() + geom_path(aes(x, y, group = y, color = g), data = four.paths) info <- expect_doppelganger_built(gg, "path-colored-groups-stay-together") expect_equivalent(length(info$data), 2) expect_identical(info$data[[1]]$name, "positive") expect_identical(info$data[[2]]$name, "negative") expect_true(any(is.na(info$data[[1]]$x))) expect_true(any(is.na(info$data[[1]]$y))) expect_true(any(is.na(info$data[[2]]$x))) expect_true(any(is.na(info$data[[2]]$y))) }) test_that("lines & points are merged into markers+lines traces", { df1 <- data.frame( sex = factor(c("Female", "Female", "Male", "Male")), time = factor(c("Lunch", "Dinner", "Lunch", "Dinner"), levels = c("Lunch", "Dinner")), total_bill = c(13.53, 16.81, 16.24, 17.42) ) gg <- ggplot(data = df1, aes(x=time, y=total_bill, group=sex, shape=sex)) + geom_line() + geom_point() info <- expect_doppelganger_built(gg, "path-line-symbols") expect_equivalent(length(info$data), 2) # 2 traces expect_equivalent(info$data[[1]]$name, "Female") expect_equivalent(info$data[[1]]$marker$symbol, "circle") expect_equivalent(info$data[[2]]$name, "Male") expect_equivalent(info$data[[2]]$marker$symbol, "triangle-up") expect_match(info$data[[1]]$mode, "lines") expect_match(info$data[[1]]$mode, "markers") expect_match(info$data[[2]]$mode, "lines") expect_match(info$data[[2]]$mode, "markers") })