繁体   English   中英

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

[英]ggplot geom_bar() customize by linetype and fill

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

总之,条形图中的值表示函数f1,f2和f3上输入X和Y的组合的输出:条形A:输入X函数f1; bar B输入Y功能f1; 条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()

这是一个有三个任意(和可论证)分类的例子。 注意使用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")))

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM