Было предложено множество решений для многих немного разных проблем, но ни одно из них не решает мою конкретную проблему.
Я хочу следующее: я хочу смешать обычные метки субфигур (a, b, c, ...) с названиями видов, выделенными курсивом. Пока я хочу сделать это только для четырех видов, так что я могу жить с ручным решением. А вот настраиваемая функция, автоматизирующая процесс, была бы полезной ...
Например. полоса текста вида a будет:
а) Виды рода
Вот воспроизводимый пример с набором данных iris
:
library(ggplot2)
p <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point()
p + facet_grid(. ~ Species)
Итак, я хотел бы, чтобы текст полосы читался (пока игнорируем отсутствующий Iris ...):
а) сетоса
б) разноцветный
в) virginica
Я попытался добавить следующие модификации:
p + facet_grid(. ~ Species, labeller = label_bquote(cols = letters[1:4] ~ .(Species)))
p + facet_grid(. ~ Species, labeller = label_bquote(cols = letters[1:4] ~ italic(Species)))
p + facet_grid(. ~ Species, labeller = label_bquote(cols = letters[1:4] ~ .(italic(Species))))
Добавление letters[1:4]
явно не работает. Я также не понимаю, почему italic(Species)
дал мне «Виды» (буквально означает слово Виды, выделенное курсивом), в то время как .(Species)
фактически вставлял числовые уровни Species
(1, 2, 3). И .(italic(Species))
просто выдает мне сообщение об ошибке could not find function "italic"
.
Как я могу получить уровни видов, выделенных курсивом? И как бы мне тогда добавить к нему буквы?
РЕДАКТИРОВАТЬ:
На самом деле я использовал решение, предложенное Axeman, то есть label_bquote(cols = .(letters[Species]) ~ italic(.(as.character(Species))))
Вот снова пример с кодом, который работал до недавнего времени:
p <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point()
p + facet_grid(. ~ Species, labeller = label_bquote(cols = .(letters[Species]) ~ italic(.(as.character(Species)))))
Однако, ggplot2
или какая-то другая зависимость, похоже, изменилась, так что это больше не работает. Теперь выдает ошибку Error in letters[Species] : could not find function "["
. Понятия не имею, почему! Любая идея?
italic(.(as.character(Species))))
. Не уверен насчет букв. Вы могли бы просто записать уровни факторов и использоватьlabel_parsed
. Например. используйтеiris$facet <- c('"a)" ~ italic(setosa)', '"b)" ~ italic(versicolor)', '"c)" ~ italic(virginica)')
, а затемfacet_grid(~ facet, labeller = label_parsed)
. - person Axeman   schedule 29.01.2020label_bquote(cols = .(letters[Species]) ~ italic(.(as.character(Species))))
работает. - person Axeman   schedule 29.01.2020