我想创建一个克利夫兰点图,其中段根据较大值的标识进行着色。下面的代码基于这里
的代码我快到了,但问题是我不希望“是”和“否”出现在图例中。由于点层和段层都映射到颜色,我不知道如何关闭一层的图例,而不是另一层的图例。
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'))
您可以使用
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")
)