仅按一个变量着色时,两个分组变量的分隔框 [英] Separate boxes for two grouping variables when color by only one variable
本文介绍了仅按一个变量着色时,两个分组变量的分隔框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下是geom_boxplot
man page中的一个示例:
p = ggplot(mpg, aes(class, hwy))
p + geom_boxplot(aes(colour = drv))
如下所示:
我想制作一个非常类似的图,但在该示例中class
变量位于class
处,而drv
在drv
处使用(格式化的)日期。
以下是一些示例数据:
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)
)
我尝试了很多不同的方法:
在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) )
另一方面,如果按照建议here将
Date
用作附加group
变量,则添加color
不再有任何附加影响:df_box %>% ggplot(aes( x = Date, y = Value, group = Date, color = Source )) + geom_boxplot() + theme_bw()
关于如何在保持yearmon
比例x轴的同时实现#1的输出,有什么想法吗?
推荐答案
由于Date
和Source
的每个组合都需要单独的框,因此请使用interaction(Source, Date)
作为group
美学:
ggplot(df_box, aes(x = Date, y = Value,
colour = Source,
group = interaction(Source, Date))) +
geom_boxplot()
这篇关于仅按一个变量着色时,两个分组变量的分隔框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文