Nothing
acontext("legend and axis text size")
data(WorldBank, package = "animint2")
scatterFacet <- ggplot()+
geom_point(aes(
x=life.expectancy, y=fertility.rate, color=region),
data=WorldBank)
viz <- list()
viz$scatterFacet <- scatterFacet
info <- animint2HTML(viz)
get_axes_style <- function(html){
axis.style.list <- list()
for(xy in c("x","y")){
xpath <- sprintf(
'//g[@class="%saxis axis %saxis_1"]//g[@class="tick major"]//text',
xy, xy)
axis.style.list[[xy]] <- getStyleValue(html, xpath, "font-size")
}
axis.style.list
}
# Axes text size -------------
test_that("unspecified axis text size default to 11pt", {
axis.style.list <- get_axes_style(info$html)
expect_match(axis.style.list$x, "11pt")
})
# rel() only works for axis.text, axis.text.x, axis.text.y
test_that("specified axis text size with rel()", {
s <- scatterFacet + theme(axis.text = element_text(size = rel(3)))
viz <- list()
viz$one <- s
info <- animint2HTML(viz)
axis.style.list <- get_axes_style(info$html)
# default size for 'text' is 11, so rel(3) * 11 = 33
expect_match(axis.style.list$x, "33pt")
expect_match(axis.style.list$y, "33pt")
})
test_that("if more than 1 element text size are defined, take the children node", {
s <- scatterFacet +
theme(axis.text = element_text(size = 12),
axis.text.x = element_text(size = 20))
viz <- list()
viz$one <- s
info <- animint2HTML(viz)
axis.style.list <- get_axes_style(info$html)
expect_match(axis.style.list$x, "20pt")
expect_match(axis.style.list$y, "12pt")
})
# legend text size -------------
test_that("unspecified legend title default to 11pt, and label text size 8.8pt", {
title.size <-
getStyleValue(info$html, '//table[@class="legend"]//tr//th',
"font-size")
label.size <-
getStyleValue(info$html, '//table[@class="legend"]//tr[@id="plot_scatterFacet_region_variable_East_Asia_&_Pacific_(all_income_levels)"]//td[@class="legend_entry_label"]',
"font-size")
expect_match(title.size, "11pt")
expect_match(label.size, "8.8pt")
})
test_that("defined legend title text size", {
l <- scatterFacet +
theme(legend.title = element_text(size=30))
viz <- list()
viz$one <- l
info <- animint2HTML(viz)
style.value <-
getStyleValue(info$html, '//table[@class="legend"]//tr//th',
"font-size")
expect_match(style.value, "30pt")
})
test_that("defined legend label text size", {
l <- scatterFacet +
theme(legend.text = element_text(size=10))
viz <- list()
viz$one <- l
info <- animint2HTML(viz)
style.value <-
getStyleValue(info$html, '//table[@class="legend"]//tr[@id="plot_one_region_variable_Europe_&_Central_Asia_(all_income_levels)"]//td[@id="plot_one_region_variable_Europe_&_Central_Asia_(all_income_levels)_label"]',
"font-size")
expect_match(style.value, "10pt")
})
test_that("specified legend title and label text size with rel()", {
s <- scatterFacet +
theme(legend.text = element_text(size=rel(2)),
legend.title = element_text(size=rel(2.5)))
viz <- list()
viz$one <- s
info <- animint2HTML(viz)
legend.text.size <-
getStyleValue(info$html, '//table[@class="legend"]//tr[@id="plot_one_region_variable_Europe_&_Central_Asia_(all_income_levels)"]//td[@id="plot_one_region_variable_Europe_&_Central_Asia_(all_income_levels)_label"]',
"font-size")
legend.title.size <-
getStyleValue(info$html, '//table[@class="legend"]//tr//th',
"font-size")
# parent text size for 'legend.text' is 11, so rel(2) * 11 = 22
expect_match(legend.text.size, "22pt")
expect_match(legend.title.size, "27.5pt")
})
## TDH default theme test, 1 Sep 2022.
y <- 1:2
df <- data.frame(y, text=paste("category", y))
sc <- scale_color_manual(values=c("category 1"="blue", "category 2"="red"))
viz <- animint(
default=ggplot()+
ggtitle("No theme specified")+
sc+
geom_text(aes(
0,y,label=text,color=text),
data=df),
theme=ggplot()+
ggtitle("theme_grey()")+
sc+
theme_grey()+
geom_text(aes(
0,y,label=text,color=text),
data=df),
sizeNum=ggplot()+
ggtitle("theme_grey()+theme(legend.text)")+
sc+
theme_grey()+
theme(legend.text=element_text(size=16))+
geom_text(aes(
0,y,label=text,color=text),
data=df),
sizePx=ggplot()+
ggtitle("theme_grey()+theme(legend.text)")+
sc+
theme_grey()+
theme(legend.text=element_text(size="16px"))+
geom_text(aes(
0,y,label=text,color=text),
data=df))
info <- animint2HTML(viz)
test_that("theme_grey legend entry text size is 16px", {
size.list <- list()
for(plot.name in names(viz)){
selector <- sprintf(
'//td[@id="plot_%s_text_variable_category_1_label"]',
plot.name)
size.list[[plot.name]] <- getStyleValue(
info$html, selector, "font-size")
}
expect_match(size.list$default, "8.8pt")
expect_match(size.list$theme, "8.8pt")
expect_match(size.list$sizeNum, "16pt")
expect_match(size.list$sizePx, "16px")
})
test_that("text colors rendered", {
computed.colors <- getStyleValue(
info$html, '//svg[@id="plot_default"]//text[@class="geom"]', "fill")
expect_color(computed.colors, c("blue", "red"))
})
test_that("Warning for invalid character/string input ", {
viz <- list(
s=scatterFacet + theme(axis.text.x = element_text(size = "12p")))
expect_warning(animint2HTML(viz), "axis.text.x is not numeric nor character ending with \'pt\' or \'px\', will be default 11pt")
})
gg <- ggplot()+geom_point(aes(
x,y),
data=data.frame(x=1,y=1,xp="foo",yp="bar"))+
facet_grid(yp~xp)
viz <- animint(
each=gg+
ggtitle("title=10px, top=100px, right=100pt")+
theme(
plot.title=element_text(size="10px"),
strip.text.x = element_text(size="100px"),
strip.text.y = element_text(size="100pt")),
global=gg+
ggtitle("title size=10, strip size=40")+
theme(
plot.title=element_text(size=10),
strip.text = element_text(size=40)),
default=gg+ggtitle("defaults"))
info <- animint2HTML(viz)
test_that("strip and title text size ok", {
size.list <- list()
for(plot.name in names(viz)){
plot.selector <- sprintf('//svg[@id="plot_%s"]', plot.name)
selector.list <- list(title='//text[@class="plottitle"]')
for(side in c("top", "right")){
selector.list[[side]] <- sprintf('//g[@class="%sStrip"]//text', side)
}
for(selector.name in names(selector.list)){
selector <- paste0(plot.selector, selector.list[[selector.name]])
if (selector.name == "title"){
size.list[[paste(plot.name, selector.name)]] <- getPropertyValue(info$html, selector, "font-size")
} else{
size.list[[paste(plot.name, selector.name)]] <- getStyleValue(info$html, selector, "font-size")
}
}
}
expect_match(size.list[["each title"]], "10px")
expect_match(size.list[["each top"]], "100px")
expect_match(size.list[["each right"]], "100pt")
expect_match(size.list[["global title"]], "10pt")
expect_match(size.list[["global top"]], "40pt")
expect_match(size.list[["global right"]], "40pt")
expect_match(size.list[["default title"]], "13.2pt")
expect_match(size.list[["default top"]], "11pt")
expect_match(size.list[["default right"]], "11pt")
})
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.