label_bquote() не работает с разделением столбцов в ggplot2

#r #ggplot2 #facet #facet-grid

#r #ggplot2 #фасет #фасет-сетка

Вопрос:

Хотя я смог label_bquote() работать с geom_raster() при фасетировании в строки, это, по-видимому, не работает при фасетировании в столбцы. Вот воспроизводимый пример, где растры разделены на строки, что дает правильный вывод:

 library(ggplot2)
d = expand.grid(
   X = c(1, 2, 3),
   Y = c(1, 2, 3),
   Z = c(1, 2, 3)
)

set.seed(123)
d$A = runif(27)

p = ggplot(
   data = d
)  
   geom_raster(
      mapping = aes(
         x = X,
         y = Y,
         fill = A
      )
   )   facet_grid(
      Z ~ .,
      labeller = label_bquote(
         "Z Value ="~ .(Z)
       )
   )
  

Результат такой, как и следовало ожидать:

Правильный графический

Однако, если facet_grid() формула изменена для отображения столбцов вместо строк:

 )   facet_grid(
          . ~ Z,
          labeller = label_bquote(
             "Z Value ="~ .(Z)
           )
       )
  

Тогда метка в кавычках игнорируется, и используется только обработанная метка:

Некорректное изображение

Что является причиной этого, пожалуйста?

РЕДАКТИРОВАТЬ: я должен был добавить: я использую ggplot2 версии 3.1.0 от CRAN.

Комментарии:

1. Похоже на ошибку. Также обратите внимание, что «новый» (2.0) стиль для ggplot заключается в использовании rows=vars() or cols=vars() для фасетирования (см. ?facet_grid справку), но даже в этом случае он ломается. Я бы сообщил об этом как о проблеме: github.com/tidyverse/ggplot2/issues

2. Спасибо, я сообщу позже.

Ответ №1:

Я сообщил об этом как об ошибке, но, по-видимому, это не так… смотрите эту проблему.

label_bquote() имеет аргументы как rows, так и cols! Вам нужно указать, что есть что, чтобы заставить его работать с facet_grid().

Или в руководстве по ggplot2:

 label_bquote(rows = NULL, cols = NULL, default)