我正在尝试使用荧光笔列和 gghighlight 仅在绘图中显示选择的汽车(来自 mtcars 数据集)。我希望颜色与突出显示的汽车相匹配,因为它们在同一行,但颜色混合在一起。
下面是使用 mtcars 的完全可重现的示例。
library(shiny)
library(tidyverse)
library(ggthemes)
library(gghighlight)
color_list <- c("darkred", "yellow3", "green4", "darkblue", "purple",
"pink2", "burlywood1", "aquamarine", "orange3", "black")
mtcars_clean <-
mtcars %>%
rownames_to_column(var = "car") %>%
head(10) %>%
mutate(car_color = color_list) %>%
glimpse()
View(mtcars_clean)
正如您从图片链接中看到的那样,每辆汽车都有一个特定的 car_color 应该在汽车被突出显示时显示。
selected_cars <- c("Mazda RX4", "Hornet 4 Drive", "Valiant", "Merc 240D", "Duster 360")
mtcars_test <-
mtcars_clean %>%
mutate(highlighter = case_when(car %in% selected_cars ~ "yes",
T ~ "no"),
car_color = case_when(highlighter == "yes" ~ car_color,
T ~ "#C4CED4"))
p_test <-
mtcars_test %>%
ggplot(aes(x = mpg, y = reorder(car, mpg, max))) +
geom_col(aes(fill = car)) +
geom_text(data = mtcars_test %>%
filter(car %in% selected_cars),
aes(label = mpg, x = mpg + 1, col = highlighter)) +
theme_fivethirtyeight() +
theme(legend.position = "none") +
labs(title = "MPG by Car") +
scale_color_manual(values = c("black")) +
gghighlight(car %in% selected_cars)
p_test + scale_fill_manual(name = p_test$data$car, values = p_test$data$car_color)
但是,正如您从下图中看到的那样,汽车“Merc 240D”应该是海蓝宝石,但它是 burlywood1。Valiant应该是pink2,但它是海蓝宝石。汽车不会保留 car_color 列中属于它们的颜色。
同样奇怪的是 geom_text 保持正确的值,但是 car_color 移动。