ggplot geom_bar() 按线型和填充自定义

ggplot geom_bar() customize by linetype and fill

提问人:rajvijay 提问时间:10/6/2016 更新时间:2/20/2019 访问量:7930

问:

我正在使用 ggplot2 和 geom_bar() 来绘制一些统计数据。有没有办法自定义条形图中的填充物,以及每个条形图的线条类型?我想强调两个关键特征:总共有五个条形,它们所代表的数字是由两种不同类型的输入产生的,并使用了我在绘图中使用的三个不同的函数。条形图应显示函数、输入变化。我想对一组输入使用全深色填充,对另一组输入使用白色填充。对于函数,我可以使用不同的线条类型来显示对比度。

总之,条形图中的值表示函数 f1、f2 和 f3 上输入 X 和 Y 组合的输出:条形图 A:输入 X 函数 f1;bar B 输入 Y 函数 f1;bar C 输入 X 函数 f2;bar D 输入 Y 函数 f2;bar E 输入 Y 函数 f3。

关于如何做到这一点的任何建议?这是我能够尝试的一个例子,但正如你所看到的,它对于我想要实现的目标并不完整,我用颜色填充超小型和中型,但我如何更改线条类型?以及我如何使用 geom_text() 作为文本:

      library(ggplot2)
      data(mpg)
      unique(mpg$class)
      library(ggplot2)

     ggplot(mpg, aes(x = class, fill = class %in% c("subcompact", "midsize"))) +
geom_bar(linetype="dashed", colour="darkgreen") + scale_fill_grey() + guides(fill=FALSE) + theme_classic()
r 图形 ggplot2 geom-bar

评论

0赞 Nate 10/6/2016
所以你希望超小型和中型的酒吧是彩色的,而其他一切都是灰色的?您要添加什么文本?

答:

4赞 Mark Peterson 10/7/2016 #1

下面是一个包含三个任意(和有争议的)分类的示例。请注意,首先使用 to 定义组,以便更轻松地创建图例。我假设在大多数用例中,您将拥有(或可以构建)与我类似的列,其中包含您感兴趣的数据。dplyr

我注意到你为什么想为这种类型的图表这样做,但无论如何,这当然是可能的。

请注意,我不得不对图例进行一些修改,以使其很好地显示。linetype

ggplot(mpg %>%
         mutate(`Small Car` = class %in% c("subcompact", "midsize")
                , `Stuff Hauler` = class %in% c("pickup", "suv")
                , `Uncomfortable for long drive` = class %in% c("compact", "pickup", "2seater")
                )
       , aes(x = class
             , fill = `Small Car`
             , linetype = `Stuff Hauler`
             , col = `Uncomfortable for long drive`
             )) +
  geom_bar(size = 2) +
  scale_fill_grey() +
  theme_classic() +
  guides(linetype = guide_legend(override.aes = list(fill = NA
                                                     , col = "black")))

enter image description here