如何在函数中应用ggtheme并在图形上应用标签?

时间:2018-06-11 20:17:00

标签: r ggplot2 label

我希望将ggthemes库中的主题应用到函数内部的ggplot。但是,似乎ggthemes会阻止标签显示。为什么会发生这种情况?

library(tidyverse)
library(ggthemes)

d <- sample_n(diamonds, size = 50)
p <- ggplot(d, aes(carat, price)) + geom_point()

f1 <- function(g, title) {
  g %+% theme_few() %+% ggtitle(title)
}

f2 <- function(g, title) {
  g %+% ggtitle(title)
}

f1(p, "testing")
f2(p, "testing")

f1会阻止标题显示。

f2似乎显示标题。

我最终想在函数内部应用主题。

谢谢。

1 个答案:

答案 0 :(得分:3)

我相信使用plot.title时会移除theme_few()。您可以将它添加回相同的功能:

f3 <- function(g, title) {
  g %+% ggtitle(title) %+% theme_few() %+%
    theme(plot.title = element_text(color="black"))
}

现在以下内容应该有效:

f3(p, "testing")

问题原因:

实际上看起来plot.title似乎没有被移除,真正的问题不仅仅是影响标题。看起来ggthemes继承了包数据ggthemes_data中的所有颜色。但是,他们最近重命名了ggthemes_data$few的颜色(从blackBlack)但无法更新功能,导致theme_few()中的所有颜色元素都被读取现在为NA,从而消除了主题中的元素。

因此,对于标题,theme_few在呼叫ggthemes_data$few$dark["black"]时呼吁ggthemes_data$few$dark["Black"]。看起来这个问题会影响这个特定函数中的所有颜色元素,所以我暂时不会使用这个版本的ggthemes。我很惊讶这种疏忽没有被抓住!