Nothing
# We should be able to reproduce identical plots by setting the random seed.
#
# ggplot(...) + geom_text_repel(..., seed = 1)
#
context("seed")
library(grid)
pos_df <- function(pos) {
data.frame(
x = sapply(pos, function(x) {
convertWidth(x[["x"]], "native")
}),
y = sapply(pos, function(x) {
convertHeight(x[["y"]], "native")
})
)
}
test_that("calling geom_text_repel without seed creates different plots", {
ix <- seq(1, nrow(mtcars), 4)
dat1 <- mtcars[ix,]
dat1$label <- rownames(mtcars)[ix]
# Make a plot with no seed and get the label positions.
png_file <- withr::local_tempfile(pattern = "testthat_test-seed1")
png(png_file)
p1 <- ggplot(dat1) + geom_text_repel(aes(wt, mpg, label = label))
print(p1)
grid.force()
pos1 <- pos_df(grid.get("textrepelgrob", grep = TRUE, global = TRUE))
dev.off()
unlink("testthat_test-seed1.png")
# Make a second plot with no seed and get the label positions.
png_file <- withr::local_tempfile(pattern = "testthat_test-seed2")
png(png_file)
p2 <- ggplot(dat1) + geom_text_repel(aes(wt, mpg, label = label))
print(p2)
grid.force()
pos2 <- pos_df(grid.get("textrepelgrob", grep = TRUE, global = TRUE))
dev.off()
# Confirm that the label positions are identical.
expect_true(nrow(pos1) == nrow(dat1))
expect_true(nrow(pos2) == nrow(dat1))
expect_true(!identical(pos1, pos2))
})
test_that("calling geom_text_repel with seed creates identical plots", {
ix <- seq(1, nrow(mtcars), 4)
dat1 <- mtcars[ix,]
dat1$label <- rownames(mtcars)[ix]
# Make a plot with no seed and get the label positions.
png_file <- withr::local_tempfile(pattern = "testthat_test-seed1")
png(png_file)
p1 <- ggplot(dat1) + geom_text_repel(aes(wt, mpg, label = label), seed = 10)
print(p1)
grid.force()
pos1 <- pos_df(grid.get("textrepelgrob", grep = TRUE, global = TRUE))
dev.off()
# Make a second plot with no seed and get the label positions.
png_file <- withr::local_tempfile(pattern = "testthat_test-seed2")
png(png_file)
p2 <- ggplot(dat1) + geom_text_repel(aes(wt, mpg, label = label), seed = 10)
print(p2)
grid.force()
pos2 <- pos_df(grid.get("textrepelgrob", grep = TRUE, global = TRUE))
dev.off()
# Confirm that the label positions are identical.
expect_true(nrow(pos1) == nrow(dat1))
expect_true(nrow(pos2) == nrow(dat1))
expect_equal(pos1, pos2, tolerance = 1e-3)
})
test_that("calling geom_text_repel without seed does not remove entropy", {
ix <- seq(1, nrow(mtcars), 4)
dat1 <- mtcars[ix,]
dat1$label <- rownames(mtcars)[ix]
# One random number will be generated after each plot and accumulated
random_seq = c()
for(s in 1:2) {
set.seed(s)
png_file <- withr::local_tempfile(pattern = "testthat_test-seed1")
png(png_file)
p1 <- ggplot(dat1) + geom_label_repel(aes(wt, mpg, label = label))
print(p1)
dev.off()
random_seq = c(random_seq, rnorm(1))
}
# The random numbers are expected to be all different
expect_true(length(unique(random_seq))==length(random_seq))
})
test_that("calling geom_label_repel without seed creates different plots", {
ix <- seq(1, nrow(mtcars), 4)
dat1 <- mtcars[ix,]
dat1$label <- rownames(mtcars)[ix]
# Make a plot with no seed and get the label positions.
png_file <- withr::local_tempfile(pattern = "testthat_test-seed1")
png(png_file)
p1 <- ggplot(dat1) + geom_label_repel(aes(wt, mpg, label = label))
print(p1)
grid.force()
pos1 <- pos_df(grid.get("textrepelgrob", grep = TRUE, global = TRUE))
dev.off()
# Make a second plot with no seed and get the label positions.
png_file <- withr::local_tempfile(pattern = "testthat_test-seed2")
png(png_file)
p2 <- ggplot(dat1) + geom_label_repel(aes(wt, mpg, label = label))
print(p2)
grid.force()
pos2 <- pos_df(grid.get("textrepelgrob", grep = TRUE, global = TRUE))
dev.off()
# Confirm that the label positions are identical.
expect_true(nrow(pos1) == nrow(dat1))
expect_true(nrow(pos2) == nrow(dat1))
expect_true(!identical(pos1, pos2))
})
test_that("calling geom_label_repel with seed creates identical plots", {
ix <- seq(1, nrow(mtcars), 4)
dat1 <- mtcars[ix,]
dat1$label <- rownames(mtcars)[ix]
# Make a plot with no seed and get the label positions.
png_file <- withr::local_tempfile(pattern = "testthat_test-seed1")
png(png_file)
p1 <- ggplot(dat1) + geom_label_repel(aes(wt, mpg, label = label), seed = 10)
print(p1)
grid.force()
pos1 <- pos_df(grid.get("textrepelgrob", grep = TRUE, global = TRUE))
dev.off()
# Make a second plot with no seed and get the label positions.
png_file <- withr::local_tempfile(pattern = "testthat_test-seed2")
png(png_file)
p2 <- ggplot(dat1) + geom_label_repel(aes(wt, mpg, label = label), seed = 10)
print(p2)
grid.force()
pos2 <- pos_df(grid.get("textrepelgrob", grep = TRUE, global = TRUE))
dev.off()
# Confirm that the label positions are identical.
expect_true(nrow(pos1) == nrow(dat1))
expect_true(nrow(pos2) == nrow(dat1))
expect_equal(pos1, pos2, tolerance = 1e-3)
})
test_that("calling geom_label_repel without seed does not remove entropy", {
ix <- seq(1, nrow(mtcars), 4)
dat1 <- mtcars[ix,]
dat1$label <- rownames(mtcars)[ix]
# One random number will be generated after each plot and accumulated
random_seq = c()
for(s in 1:2) {
set.seed(s)
png_file <- withr::local_tempfile(pattern = "testthat_test-seed1")
png(png_file)
p1 <- ggplot(dat1) + geom_label_repel(aes(wt, mpg, label = label))
print(p1)
dev.off()
random_seq = c(random_seq, rnorm(1))
}
# The random numbers are expected to be all different
expect_true(length(unique(random_seq))==length(random_seq))
})
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.