【问题标题】:ggplot2 geom_point with aes fill only displays black带有aes填充的ggplot2 geom_point仅显示黑色
【发布时间】:2021-12-25 07:22:51
【问题描述】:

我无法用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()

The plot I get

【问题讨论】:

    标签: r ggplot2 geom-point geom-segment


    【解决方案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_manual 还是scale_fill_manual 取决于geom 类型。根据"Change Colors Manually"

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

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

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

    【讨论】:

    • 谢谢你,这太棒了!
    • 不客气。如果它回答了你的问题,那么请"accept answer"
    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多