В следующем примере функция возвращает тему, которая изменяется в некоторой степени (в этом минимальном примере только некоторые крайне уродливые модификации ...). Добавление этой функции в первый раз к ggplot ничего не делает, но добавив его в любой другой сюжет, он работает как intenden. Как я могу убедиться, что функция работает должным образом в первом приложении или где моя ошибка в мышлении?Почему тема создана, возвращенная функцией, отложенной в ее приложении?
require(ggplot2)
# Minimal example: function returning some theme with modifications
mytheme <- function(size = 3) {
th.my <- theme_set(theme_bw(base_size=size))
th.my$axis.ticks$size = 1
return (th.my)
}
# Plot something, applying theme function first time
fig1 <- ggplot(data = mtcars, aes(x = mpg)) +
geom_point(aes(y = hp)) +
mytheme()
print(fig1)
# Now exactly the same, again
fig2 <- ggplot(data = mtcars, aes(x = mpg)) +
geom_point(aes(y = hp)) +
mytheme()
print(fig2)
Как можно видеть в следующих участках, в первый раз тема не была применена, но во второй раз он работал ...
Спасибо, это помогло много! Чтобы понять полный рабочий процесс: во-первых, 'theme_set' меняет тему по умолчанию, но не возвращает что-то полезное. Затем в моей функции я определил некоторые изменения и те, которые были применены правильно. Тем не менее, модификация темы по умолчанию происходит в последующих вызовах 'ggplot', поскольку текущий вызов' ggplot' уже имеет тему по умолчанию. Имеет ли это смысл? – Sosel