我想创建一个Cleveland点图,其中线段根据较大值的标识进行着色.下面的代码是基于代码here

我快到了,但问题是,我不希望"是"和"不是"出现在传说中.由于点和段图层都映射到 colored颜色 ,我不知道如何关闭一个图层的图例,而不是另一个.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'))

enter image description here

推荐答案

show.legend=FALSE用于防止geom显示在图例键中.但是,您可以使用scalebreaks=参数来指定要在图例中显示的类别:

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")
  )

R相关问答推荐

使用对管道内单元格的引用生成新变量

任意列的欧几里得距离

如何计算R数据集中每个女性的子元素数量?

如何根据R中其他列的值有条件地从列中提取数据?

如何在Chart_Series()中更改轴值的 colored颜色 ?

一小时满足条件的日期的 Select

我正在努力用R计算数据集中的中值逐步距离

如何识别倒排的行并在R中删除它们?

R-按最接近午夜的时间进行筛选

使用RSelenium在R中抓取Reddit时捕获多个标签

如何使用同比折线图中的个别日

优化从每个面的栅格中提取值

以不同于绘图中元素的方式对GG图图例进行排序

将列的值乘以在不同数据集中找到的值

我需要使用ggplot2制作堆叠条形图

如何使用grepl()在数据帧列表中 Select 特定字符串?

如何在shiny 的应用程序 map 视图宣传单中可视化单点

带查找数据的FCT_REORDER.帧

如果y中存在x中的值,则将y行中的多个值复制到相应的x行中

如何修改Rust中的R字符串并将其赋给新的R变量,并使用extendr保留原始R字符串