Как применить функцию ggtheme и нанести метки на график? - PullRequest
0 голосов
/ 11 июня 2018

Я хочу применить тему из библиотеки 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 голосов
/ 11 июня 2018

Я считаю, 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$fewblack до Black), но не смогли обновить функции, из-за чего все элементы цвета в theme_few() теперь читаются как NA, что исключаетэлемент из темы.

Таким образом, в случае заголовка, theme_few вызывает ggthemes_data$few$dark["black"], когда должен вызывать ggthemes_data$few$dark["Black"].Похоже, что эта проблема повлияет на все элементы цвета в этой конкретной функции, поэтому я бы не использовал эту версию ggthemes в настоящее время.Я удивлен, что это упущение не было поймано!

...