#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()
orcols=vars()
для фасетирования (см.?facet_grid
справку), но даже в этом случае он ломается. Я бы сообщил об этом как о проблеме: github.com/tidyverse/ggplot2/issues2. Спасибо, я сообщу позже.
Ответ №1:
Я сообщил об этом как об ошибке, но, по-видимому, это не так… смотрите эту проблему.
label_bquote() имеет аргументы как rows, так и cols! Вам нужно указать, что есть что, чтобы заставить его работать с facet_grid().
Или в руководстве по ggplot2:
label_bquote(rows = NULL, cols = NULL, default)