Для пользовательской темы ggplot2
я бы хотел изменить эстетику по умолчанию для некоторого geom
, скажем, я хочу красные точки вместо черных точек.
Из этого ответа Я знаю, что мы можем изменить значения по умолчанию для geom
, используя функцию update_geom_default
, но мне интересно, возможно ли изменить цвет только при вызове theme_red_dots
?
Пример моей наивной попытки:
library(ggplot2)
theme_red_dots <- function(...) {
update_geom_defaults("point", list(colour = "red"))
theme_minimal() +
theme(...)
}
Хорошо выглядит здесь:
ggplot(mtcars, aes(mpg, disp)) +
geom_point() +
theme_red_dots()
Но я бы хотел, чтобы точки снова были черными, когда я звоню
ggplot(mtcars, aes(mpg, disp)) +
geom_point()
Заранее спасибо!
Ниже приведен пример того, почему я подумал, что это может быть полезно. Мы можем изменить panel.background
на черный довольно легко, но это не позволит увидеть точки, если мы не сопоставим эстетику с цветом. (Полезность этого theme_black
, безусловно, можно обсудить, но я бы хотел избежать спора об этом.)
theme_black <- function(...) {
theme_minimal() +
theme(panel.background = element_rect(fill = "black")) +
theme(...)
}
# update_geom_defaults("point", list(colour = "black"))
ggplot(mtcars, aes(mpg, disp)) +
geom_point() +
theme_black()
Изменение цвета точек внутри geom_point()
является вариантом здесь (см. Ответ @ zx8754), но для этого требуется, чтобы пользователь theme_black()
изменил его, хотя мне интересно, есть ли способ сделать это правильно внутри theme_*
.