2016-12-12 25 views
10

Недавно я установил пакет cowplot. Однако после этого я заметил, что у моих ggplots отсутствуют их фон и линии сетки theme_grey()!Cowplot сделал ggplot2 тему исчезнуть/Как увидеть текущую тему ggplot2 и восстановить значение по умолчанию?

enter image description here

Код для создания каждого из указанных участков является:

result_df %>% 
    ggplot(aes_string(x = 'p', y = 'r')) + 
    # theme_grey() + # uncomment this line to produce plot on right 
    geom_point(aes(group = c), size = 0.5) + 
    geom_line(aes(group = c), size = 0.2, linetype = 'dotted') + 
    theme(axis.text.x=element_text(angle = 90, hjust = 1, vjust = 0.5)) + 
    facet_grid(b ~ e, scales = "free_y") + 
    scale_x_continuous(breaks = seq(0, 10, 2)) 

без явного вызова + theme_grey() я получить участок слева.

Что здесь происходит? Я думал, что theme_grey() по умолчанию. Как узнать, что такое моя тема по умолчанию?

вот фрагмент из моей sessionInfo():

R version 3.3.2 (2016-10-31) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] ggthemes_3.3.0 cowplot_0.7.0  RPostgreSQL_0.4-1 DBI_0.5-1   knitr_1.15.1  dirmult_0.1.3-4 dplyr_0.5.0  
[8] purrr_0.2.2  readr_1.0.0  tidyr_0.6.0  tibble_1.2  ggplot2_2.2.0  tidyverse_1.0.0 

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.8  magrittr_1.5  munsell_0.4.3 colorspace_1.3-1 R6_2.2.0   stringr_1.1.0 plyr_1.8.4  tools_3.3.2  
[9] grid_3.3.2  gtable_0.2.0  lazyeval_0.2.0 assertthat_0.1 crayon_1.3.2  reshape2_1.4.2 rsconnect_0.6 testthat_1.0.2 
[17] labeling_0.3  stringi_1.1.2 scales_0.4.1  
+6

cowplot считает, что это хорошая идея, чтобы изменить тему по умолчанию при подключении – baptiste

+0

спасибо, очень полезно. Итак, как мне узнать, что такое тема по умолчанию и изменить ее? :) – Alex

+1

set_theme (theme_grey())? –

ответ

14

Вы можете использовать theme_get(), чтобы увидеть текущий «по умолчанию» тему.

Вы можете использовать theme_set(), чтобы изменить тему по умолчанию.

Настройки темы не переносят сеансы.

Обычно по умолчанию будет theme_grey, но cowplot считает, что это необходимо изменить, чтобы theme_cowplot. Я действительно этого не хочу.

Вы можете использовать :: обозначения, чтобы полностью избежать этого, или вы можете загрузить пакет как:

library(cowplot) 
theme_set(theme_grey()) 
+3

Я слышу вас, и я действительно думаю о том, чтобы отделить весь код plot_grid и ggdraw в отдельный пакет, который не коснулся темы. Первоначально обложка ковер была посвящена теме, и с тех пор она развивается, чтобы делать все больше и больше. –

+0

Это имеет смысл! Только не для нас, аутсайдеров, которые используют пакет для других вещей. :) – Axeman

+1

На самом деле, в последнее время я сталкиваюсь со все большим количеством случаев, когда я хочу, чтобы тема не изменилась. Например, я что-то демонстрирую, но у меня загружен ковер, поэтому сюжет выглядит иначе, чем ожидалось. Перемещение всего кода чертежа в отдельный пакет - правильный путь.Таким образом, cowplot не изменяет поведение, и люди могут просто начать загрузку другого пакета, когда они не хотят темы. Один день. –