Как использовать курсив в label_bquote для полосных текстовых меток

Было предложено множество решений для множества немного разных проблем, но ни одно из них не решает мою конкретную проблему.

Я хочу следующее: я хочу смешать обычные метки субфигур (a, b, c, ...) с названиями видов, выделенными курсивом. Пока я хочу сделать это только для четырех видов, так что я могу жить с ручным решением. А вот настраиваемая функция, автоматизирующая процесс, была бы полезной...

Например, полоса текста вида a будет:

а) Род виды

Вот воспроизводимый пример с iris набор данных:

library(ggplot2)
p <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point()
p + facet_grid(. ~ Species)

Итак, я хотел бы, чтобы текст полосы был прочитан (игнорируя отсутствующую радужку...):

а) сетоса

б) разноцветный

в) 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 "[". Понятия не имею, почему! Есть идеи?

0 ответов

Другие вопросы по тегам