有时候,想要指定箱线图中 box 的位置,以及不同 box 之间的间隙,早些时候,我的思路是画分组箱线图,详见我之前发的简书:
但是,现在来看,仍然不够自由,想要找一种无拘束的方式,直接指定每个 box 的横坐标位置,比如给定一组向量 c (1, 2, 4, 5) 这种,来指定每个 box 所在的位置。
发现,可以给 box 指定一个 position 参数,见示例:
# 示例数据集
data <- data.frame(
Group = rep(c("A", "B", "C", "D"), each = 3),
Value = c(4, 7, 6, 2, 9, 8, 5, 3, 7, 1, 6, 4)
)
# 绘图
ggplot(data, aes(x = as.numeric(factor(Group)), y = Value, fill = Group)) +
geom_boxplot(position = position_nudge(x = c(1, 2, 4, 5)), width = 0.7)
![](https://img.haomeiwen.com/i23569980/ee329d5c760915c2.png)
将横坐标设定为数值变量后,可以直接通过 position = position_nudge(x = c(1, 2, 4, 5)) 调整每一个 box 的位置,比如想要前两个和后两个之间拉开一定距离。
但是横坐标会相应地发生变化,不是原来的 A B C D 了,但是也没关系,再加一行:
ggplot(data, aes(x = as.numeric(factor(Group)), y = Value, fill = Group)) +
geom_boxplot(position = position_nudge(x = box_positions), width = 0.7) +
scale_x_continuous(breaks = c(2, 4, 7, 9), labels = c("A", "B", "C", "D"))
![](https://img.haomeiwen.com/i23569980/66fa3a35eb86bbf6.png)
指定顺序、颜色之类,我之前有详细地说过,有兴趣可以看看我的这个文集:R 语言绘图,主要包括绘图过程中一些细微处的调整。
只要能想象得到,咱就要能画出来。欢迎评论交流!
网友评论