ggplot2 无法为图例图标着色
ggplot2 unable to color legend icons
我正在尝试使用 ggplot2 使用数据帧 (df) 中的值制作某种时间线。我已经设法准确地绘制出我想要的数据(不同颜色的线段按照这个确切的顺序连接 x 标记,即从左到右:'early'、'unknown'、'late', 'sub').数据框中的 startpoint
和 endpoint
列用于定义点和线段的位置。
问题是图例没有显示 '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
我正在尝试使用 ggplot2 使用数据帧 (df) 中的值制作某种时间线。我已经设法准确地绘制出我想要的数据(不同颜色的线段按照这个确切的顺序连接 x 标记,即从左到右:'early'、'unknown'、'late', 'sub').数据框中的 startpoint
和 endpoint
列用于定义点和线段的位置。
问题是图例没有显示 '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