我试着按照你的方式做了以下事情。我不熟悉gghighlight()
。我快速浏览了一下,认为您需要使用逻辑检查来突出显示某些组。如果您可以设置逻辑检查,我认为您可以使用该功能。在您的问题中,您只是提到要突出显示特定组。您可以采取的一种方法是使用scale_color_identity()
. 我在下面创建了一个示例数据。我基本上分配red
到三个组(即1、3、5)mutate()
。其他组进入gray50
列,color
。
library(tidyverse)
guidelines <- tibble(step = rep(c("First", "Highest", "Final"), times = 5),
type = c(2, 4, 4, 2, 4, 4, 4, 4, 4, 2, 4, 2, 1, 3, 3),
grp = rep(1:5, each = 3))
mutate(guidelines,
step = factor(step, levels = c("First", "Highest", "Final")),
color = if_else(grp %in% c(1, 3, 5), "red", "gray50")) -> guidelines
ggplot(data = guidelines, aes(x = step, y = type, color = color, group = grp)) +
geom_line(linetype = 1, position = position_jitter(w = 0, h = 0.05)) +
scale_color_identity(guide = "legend", labels = c("Other groups", "Group 1, 3, 5")) +
scale_y_continuous(breaks = c(1,2,3,4),
labels = c("Method 1", "Method 2", "Method 3", "Method 4"))
gghighlight 的潜在解决方案
我没有你的数据。所以这个想法可能/可能行不通。但我想出了以下想法。我又修改guidelines
了一次。我创建了一个新的连续变量(即虚拟变量),用于 x 轴。这有点扭曲,因为我们应该在轴上有一个分类变量。但是,如果您想使用gghighlight
. 据我了解gghighlight
,我们需要在函数中进行逻辑检查。在这里,我想突出显示最大值为 3 的行。这突出显示了第 5 组。由于您想要有两个分类变量,我们必须修改 x 和 y 轴上的名称。如果您可以为数据中的两组(16 和 32)设置逻辑检查,我相信您可以使用这个想法。
library(gghighlight)
mutate(guidelines,
dummy = recode(.x = step, First = 1, Highest = 2, Final = 3),
step = factor(step, levels = c("First", "Highest", "Final")),
color = if_else(grp %in% c(1, 3, 5), "red", "gray50")) -> guidelines
ggplot(data = guidelines, aes(x = dummy, y = type, color = color, group = grp)) +
geom_line(size = 2, linetype = 1) +
gghighlight(max(as.numeric(type)) == 3, label_key = grp) +
labs(x = "Step", y = "Type") +
scale_x_continuous(breaks = c(1,2,3),
labels = c("First", "Highest", "Final")) +
scale_y_continuous(breaks = c(1,2,3,4),
labels = c("Method 1", "Method 2", "Method 3", "Method 4"))