当两层映射到相同的美感时隐藏一层的图例值

问题描述 投票:0回答:1

我想创建一个克利夫兰点图,其中段根据较大值的标识进行着色。下面的代码基于这里

的代码

我快到了,但问题是我不希望“是”和“否”出现在图例中。由于点层和段层都映射到颜色,我不知道如何关闭一层的图例,而不是另一层的图例。

show.legend
在这种情况下似乎没有任何效果。

value1 <- abs(rnorm(26))*2

data <- data.frame(
  x=LETTERS[1:26], 
  value1=value1, 
  value2=value1+1+rnorm(26, sd=1) 
) %>%
  mutate(gt=ifelse(value1>value2,'yes','no'))

dataLong <- data %>% select(-gt) %>% pivot_longer(cols=-x)

ggplot() +
  geom_segment(data=data, aes(x=x, xend=x, y=value1, yend=value2,color=gt),show.legend = FALSE) +
  geom_point(data=dataLong, aes(x=x,y=value,color=name),size=3) +
  coord_flip() +
  scale_color_manual(values=c(yes='red',no='blue',value1='red',value2='blue'))

r ggplot2
1个回答
0
投票

您可以使用

breaks=
指定要在图例中显示的类别:

library(ggplot2)

ggplot() +
  geom_segment(
    data = data, aes(x = x, xend = x, y = value1, yend = value2, color = gt),
    show.legend = FALSE
  ) +
  geom_point(data = dataLong, aes(x = x, y = value, color = name), size = 3) +
  coord_flip() +
  scale_color_manual(
    values = c(yes = "red", no = "blue", value1 = "red", value2 = "blue"),
    breaks = c("value1", "value2")
  )

© www.soinside.com 2019 - 2024. All rights reserved.