ggplot自定义主题中的条件参数

时间:2019-02-18 04:00:53

标签: r ggplot2

我正在基于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

在自定义主题中是否有可能?

1 个答案:

答案 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)