仅按一个变量着色时,两个分组变量的分隔框 [英] Separate boxes for two grouping variables when color by only one variable

查看:18
本文介绍了仅按一个变量着色时,两个分组变量的分隔框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是geom_boxplot man page中的一个示例:

p = ggplot(mpg, aes(class, hwy))
p + geom_boxplot(aes(colour = drv))

如下所示:

我想制作一个非常类似的图,但在该示例中class变量位于class处,而drvdrv处使用(格式化的)日期。

以下是一些示例数据:

df_box = data_frame(
  Date = sample(
    as.yearmon(seq.Date(from = as.Date("2013-01-01"), to = as.Date("2016-08-01"), by = "month")),
    size = 10000, 
    replace = TRUE
  ),
  Source = sample(c("Inside", "Outside"), size = 10000, replace = TRUE),
  Value = rnorm(10000)
)

我尝试了很多不同的方法:

  1. 在Date变量两边加上as.factor,那么我就不再有x轴上间隔良好的日期刻度:

        df_box %>% 
          ggplot(aes(
          x = as.factor(Date),
        y = Value,
        # group = Date, 
        color = Source
      )) + 
      geom_boxplot(outlier.shape = NA) + 
      theme_bw() + 
      xlab("Month Year") + 
      theme(
        axis.text.x = element_text(hjust = 1, angle = 50)
      )
    

  1. 另一方面,如果按照建议hereDate用作附加group变量,则添加color不再有任何附加影响:

        df_box %>% 
          ggplot(aes(
            x = Date,
            y = Value,
            group = Date, 
            color = Source
          )) + 
         geom_boxplot() + 
         theme_bw()
    

关于如何在保持yearmon比例x轴的同时实现#1的输出,有什么想法吗?

推荐答案

由于DateSource的每个组合都需要单独的框,因此请使用interaction(Source, Date)作为group美学:

ggplot(df_box, aes(x = Date, y = Value, 
                   colour = Source, 
                   group = interaction(Source, Date))) + 
    geom_boxplot()

这篇关于仅按一个变量着色时,两个分组变量的分隔框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆