我正在基于ggthemes的538主题开发自定义主题。我有一个特殊的用例,如果要准备有关生物的图形,我想有条件地更改图例文本。如果要报告属种结果,我想将图例文字用斜体表示。
到目前为止,这是我的主题:
theme_EPI <- function() {
theme_fivethirtyeight(base_size = 14) %+replace%
theme(
panel.background = element_blank(),
plot.background = element_rect(fill = 'white', colour = NA),
plot.title = element_text(size = 18),
strip.text = element_text(size=14),
legend.text = element_text(size = 12, face = 'italic'),
legend.background = element_rect(fill="transparent", colour=NA),
legend.key = element_rect(fill="transparent", colour=NA),
panel.grid.major.y = element_line(colour = 'grey90'),
panel.grid.major.x = element_blank(),
strip.background = element_blank()
)
}
如果尝试将参数organism=TRUE
传递给函数调用,然后又将ifelse(organism==TRUE, face='italic', 'face='plain')
传递给element_text
。
在自定义主题中是否有可能?
答案 0 :(得分:3)
是的,这绝对有可能,您只需要稍微重新考虑ifelse()
的工作方式即可:
theme_EPI = function(organism = TRUE) {
theme_dark() %+replace%
# axis.title: labels for x and y axes
theme(axis.title = element_text(
face = ifelse(organism, 'italic', 'plain')
))
}
ggplot(iris, aes(Petal.Width, Petal.Length)) +
geom_point() +
theme_EPI() # Default: organism = TRUE
ggplot(iris, aes(Petal.Width, Petal.Length)) +
geom_point() +
theme_EPI(organism = FALSE)