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

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

Я хочу следующее: я хочу смешать обычные метки субфигур (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 "[". Понятия не имею, почему! Любая идея?


person bamphe    schedule 28.01.2020    source источник
comment
Вы можете найти решение здесь: stackoverflow.com/a/20037877/9022665   -  person Jonathan V. Solórzano    schedule 28.01.2020
comment
Спасибо за ваше предложение. Возможно, я не совсем понял, я просто хочу, чтобы название вида было выделено курсивом, а буква впереди - обычным шрифтом. Если я установлю лицо в теме, весь текст полосы будет выделен курсивом ...   -  person bamphe    schedule 28.01.2020
comment
Хорошо, тогда это может быть полезно: stackoverflow.com/a/34980273/9022665   -  person Jonathan V. Solórzano    schedule 28.01.2020
comment
Было бы 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.2020
comment
Собственно label_bquote(cols = .(letters[Species]) ~ italic(.(as.character(Species)))) работает.   -  person Axeman    schedule 29.01.2020
comment
Большое спасибо, Топорщик! Если вы опубликуете это как ответ, я приму это как таковое;)   -  person bamphe    schedule 29.01.2020
comment
Мне все еще очень трудно понять основные принципы построения графиков и особенно функцию этикетировщика. Я просто не понимаю ...   -  person bamphe    schedule 29.01.2020