我正在使用ggplot制作箱线图,数据被2个因素变量分类。我想通过varwidth = TRUE
使盒子的大小反映样本量,但这样做会导致盒子重叠。
1)一些具有3 x 2结构的示例数据
data <- data.frame(group1= sample(c("A","B","C"),100, replace = TRUE),group2= sample(c("D","E"),100, replace = TRUE) ,response = rnorm(100, mean = 0, sd = 1))
2) 默认箱线图:ggplot没有变量宽度
ggplot(data = data, aes(y = response, x = group1, color = group2)) + geom_boxplot()
我喜欢第一层分组的展示方式。
现在我尝试添加可变宽度...
3) ...当 varwidth = TRUE
时,我得到了什么
ggplot(data = data, aes(y = response, x = group1, color = group2)) + geom_boxplot(varwidth = T)
不管我在调用ggplot
和geom_boxplot
语句时使用color = group2
还是group = group2
,似乎都会出现这种重叠。尝试使用position_dodge
也没有帮助。
4) 一个我不太喜欢的解决方案是通过组合我的group1和group2来创建唯一的因素。
data$grp.comb <- paste(data$group1, data$group2)
ggplot(data = data, aes(y = response, x = grp.comb, color = group2)) + geom_boxplot()
我更喜欢将事物分组以反映交叉分类。
5) 未来的方向:
我想要要么a)找出如何使varwidth = TRUE
不会导致框重叠,要么b)手动调整组合组之间的间距,使得第一级分组内的框更加紧密。
geom_boxplot(varwidth = T, alpha = 0.5)
。ggplot(data = data, aes(y = response, x = group1, color = group2)) + geom_boxplot(varwidth = T, alpha = 0.5)
- Chris