0

我无法用 显示不同的填充颜色geom_point,只显示黑色。我知道我可以使用颜色来显示不同的颜色,但它似乎不适用于geom_segment. 这是我得到的一个示例,其中点仅显示为黑色,而不是scale_fill_manual. 以其他方式显示相同的图并使用不同的两个图例,一种用于颜色,另一种用于具有不同颜色的形状。谢谢!

ggplot(mtcars, aes(x=factor(gear), mpg)) +
  geom_segment(aes(x=factor(gear), xend=factor(gear), y = mpg, yend = mpg+1, color = factor(cyl)), size = 4) +
  geom_point(aes(fill = factor(carb))) +
  scale_color_manual(values = c('red', 'green', 'blue')) +
  scale_fill_manual(values = c('pink', 'light green', 'light blue', 'yellow', 'purple', 'orange')) +
  coord_flip()

我得到的情节

4

1 回答 1

1

使用geom_pointgeom_segment,它们都需要scale_color_manual更改颜色,这当然是不可能的。但是,如果您使用开放符号(可以填充),则可以将一个因子映射到填充,另一个映射到颜色。因此,他们每个人都可以在不同的尺度上拥有自己的颜色。因此,对于geom_point,我将形状指定为pch = 21

library(ggplot2)
ggplot(mtcars, aes(x = factor(gear), mpg)) +
  geom_segment(aes(
    x = factor(gear),
    xend = factor(gear),
    y = mpg,
    yend = mpg + 1,
    color = factor(cyl)
  ),
  size = 4) +
  geom_point(aes(fill = factor(carb)), pch = 21) +
  scale_color_manual(values = c('red', 'green', 'blue')) +
  scale_fill_manual(values = c('pink', 'light green', 'light blue', 'yellow', 'purple', 'orange')) +
  coord_flip()

在此处输入图像描述

是否使用scale_color_manualscale_fill_manual取决于geom类型。根据“手动更改颜色”

可以使用以下函数指定自定义调色板:

  • scale_fill_manual() 用于箱线图、条形图、小提琴图等
  • scale_color_manual() 用于线和点

但是不同的绘图符号可以让您绕过这些规范。

于 2021-11-13T05:11:57.303 回答