ggplot2 无法为图例图标着色

ggplot2 unable to color legend icons

我正在尝试使用 ggplot2 使用数据帧 (df) 中的值制作某种时间线。我已经设法准确地绘制出我想要的数据(不同颜色的线段按照这个确切的顺序连接 x 标记,即从左到右:'early'、'unknown'、'late', 'sub').数据框中的 startpointendpoint 列用于定义点和线段的位置。

问题是图例没有显示 'x' 图标的颜色,它们只是灰色。我试过添加 scale_color_manual()scale_fill_manual() 命令,但它们似乎没有任何改变。当我将形状更改为 shape = 21 时,图例确实显示了正确的颜色,但是,我真的希望形状为 4(x 图标)。虽然我不关心图例的形状,但 scale_shape_manual() 再次没有改变图例的任何内容。 我还尝试在 ggplot()geom_segment() and/or geom_point().

aes() 参数内外放置不同的 color 参数

如何让图例中的图标显示正确的颜色?

下面我添加了一段代码来重现问题。

library(ggplot2)
library(RColorBrewer)

## Define dataframe
df <- data.frame(Var = c("sub","late","unknown","early"),
                 Time = c(10,267,0,1256),
                 Endpoint = c(1533,1523,1256,1256),
                 Startpoint = c(1523,1256,1256,0))
colorscheme <- RColorBrewer::brewer.pal(9, "Set1")[c(1,4,2,3)]

## Make plot
  ggplot(df, aes(x="", y=Endpoint, fill=Var), color =colorscheme) +
  geom_segment( aes(x="", xend="", y=Startpoint, yend=Endpoint), color = colorscheme) +
  geom_point(aes(x="", y=Endpoint),size=5, shape=4 , color = colorscheme) +
  coord_flip()

提前感谢您的任何建议!

您应该使用 color 而不是 fill。要从图例中删除该行,请使用 guides(color = guide_legend(override.aes = list(linetype = 0))) 或在 geom_segment.

中使用 show.legend = F

此外,传入的参数 ggplot 之后无需重复。

ggplot(df, aes(x="", y=Endpoint, color=Var), colorscheme) +
  geom_segment(aes(xend="", y=Startpoint, yend=Endpoint)) +
  geom_point(size=5, shape=4) +
  coord_flip() +
  guides(color = guide_legend(override.aes = list(linetype = 0)))

 #or

ggplot(df, aes(x="", y=Endpoint, color=Var), colorscheme) +
  geom_segment(aes(xend="", y=Startpoint, yend=Endpoint)) +
  geom_point(size=5, shape=4) +
  coord_flip()

试试这个:

ggplot(df, aes(x = "", y = Endpoint, color = Var), colorscheme) +
  geom_segment(aes(x = "", xend = "", y = Startpoint, yend = Endpoint), show.legend = FALSE) +
  geom_point(aes(x = "", y = Endpoint), size = 5, shape = 4) +
  coord_flip()

这样图例将只显示 X