2014-09-24 4 views
1

Мне нравится писать функцию, которая в глобальном масштабе задает определенные параметры темы и масштабирует эстетику объектов ggplot, сравнимую с ggthemr-package.Горячая замена/установка эстетики/цветов глобального масштаба для ggplot?

я могу изменить параметры тему с следующим кодом-сниппета:

sjtheme <- theme_grey() + 
    theme(axis.text.x = element_text(angle=axis.angle.x, size=rel(axis.size.x), colour=axis.color.x), 
     axis.text.y = element_text(angle=axis.angle.y, size=rel(axis.size.y), colour=axis.color.y), 
     axis.title = element_text(size=rel(axis.title.size), colour=axis.title.color), 
     axis.ticks = element_line(colour=axis.ticks.color), 
     axis.ticks.length = unit(axis.ticks.length, "cm"), 
     plot.title = element_text(size=rel(title.size), colour=title.color), 
     plot.background = element_rect(colour=plot.bordercol, fill=plot.backgroundcol), 
     panel.background = element_rect(colour=panel.bordercol, fill=panel.backcol), 
     panel.grid.minor = element_line(colour=panel.minor.gridcol), 
     panel.grid.major = element_line(colour=panel.major.gridcol)) 
theme_set(sjtheme) 

GEOM по умолчанию можно изменить, например, с

update_geom_defaults('boxplot', list(fill = geom.colors, alpha = geom.alpha, outlier.colour = geom.colors)) 

теперь это так хорошо работает, так что всякий раз, когда я создаю ggplot-объект, мои темы и GEOM опции применяются.

Но как мне это сделать с помощью весов, так что цвета штрих/точка/линия получат новый стандарт?

Существует решение в ggthemr-пакет: https://github.com/cttobin/ggthemr/blob/master/R/theme_scales.R

Однако этот подход изменяет глобальную окружающую среду, которая нарушает правила представления CRAN. Все предложения, которые я нашел через поиск eninge в Интернете, не работают, например «set_scale_defaults» (который был удален в новых версиях ggplot) или this posting или this posting.

Итак, есть ли возможность изменить масштабные значения по умолчанию, которые не изменяют глобальную среду пользователя?

ответ

2

вы можете просто переопределить соответствующую шкалу,

scale_colour_discrete <- function(...) 
    scale_colour_brewer(..., palette="Set1") 
+0

В некоторых случаях ваше решение работает, в других случаях это не так. Тем не менее, я не понял шаблон, когда и почему? Когда я перезаписываю scale_fill ..., сюжет с уклоненными барами не применяет измененную тему. Однако, если я вручную добавлю «+ scale_fill ...» в объект ggplot, я получаю предупреждение: scale_fill существует, будет перезаписан. Итак, почему моя переопределенная шкала не применяется? Хм ... Было бы здорово, если бы цвета geom могли быть установлены через параметры темы, так как это, кажется, работает отлично. Я думаю, я буду использовать параметр «bar color» для моей функции построения графика. – Daniel

+0

трудно сказать без примера ... Что касается вашей точки на тему против геомных по умолчанию, я полностью согласен и несколько раз предлагал что-то в этом направлении несколько раз в прошлом. К сожалению, этого не произойдет, и ggplot2 больше не разрабатывается. – baptiste

+0

Правда, пример был бы полезен. Тем не менее, все эти вещи интегрированы в мой пакет, но я мог бы передать последний код GitHub, так что каждый может проверить источник - я думал, это может быть слишком много работы, поэтому я попытался задать этот вопрос в «общем», путь. Кстати, где вы читали, что ggplot2 больше не разрабатывается? – Daniel

Смежные вопросы