Я думаю, что gghighlight не построен для такого рода сюжета - пока нет! Вы могли бы подать запрос на функцию? Хотя немного неясно, очень ли полезна эта визуализация. Gghighlight всегда dr aws все - это делает "странные" тени при уклонении.
Если вы хотите продолжать использовать gghightlight, возможно, попробуйте фасетирование, которое они предлагают в их виньетка
Предложение - Используйте фасеты:
(используя mtcars
в качестве примера)
library(tidyverse)
library(gghighlight)
mtcars2 <- mtcars %>% mutate(cyl = as.character(cyl), gear = as.character(gear))
ggplot(mtcars2, aes(cyl, disp, fill = gear)) +
geom_col() + #no dodge
gghighlight(cyl == "4") + #only one variable
facet_grid(~ gear) #the other variable is here
#> Warning: Tried to calculate with group_by(), but the calculation failed.
#> Falling back to ungrouped filter operation...
Создано в 2020-03-09 пакетом prex (v0.3.0)
Или, здесь без gghighlight
, в более традиционном подходе поднабора. Вам нужно создать подмножество данных, которое содержит строки для каждой группы, по которой вы хотите уклониться, в данном случае «цил» и «шестеренка». Я заменяю несущественные данные на «NA», вы также можете использовать «0».
library(tidyverse)
mtcars2 <- mtcars %>%
mutate(cyl = as.character(cyl), gear = as.character(gear)) %>%
group_by(cyl, gear) %>%
summarise(disp = mean(disp))
subset_mt <- mtcars2 %>% mutate(highlight = if_else(cyl == '4' & gear == '3', disp, NA_real_))
ggplot() +
geom_col(data = mtcars2, aes(cyl, disp, group = gear), fill = 'grey', alpha = 0.6, position = 'dodge') +
geom_col(data = subset_mt, aes(cyl, highlight, fill = gear), position = 'dodge')
#> Warning: Removed 7 rows containing missing values (geom_col).
Создано в 2020-03-10 пакетом Представить (v0.3.0)