首页 > 解决方案 > 如何制作具有不同抖动的不同 x 值的 ggplot 图?

问题描述

如果我想抖动点,但我的 x 轴有这样的不均匀间隔:

library(ggplot2)
ggplot(ToothGrowth, aes(x=dose, y=len)) + geom_point()

在此处输入图像描述

如何在不同的 x 轴值处改变抖动的宽度,以免最终出现这样的重叠?

ggplot(ToothGrowth, aes(x=dose, y=len)) + geom_jitter(width = 0.3,size = 4)

在此处输入图像描述

例如,我想要一种方法使抖动在 0.5 处变窄,在 1 处变宽,在 2 处变宽。

标签: rggplot2jitter

解决方案


一种肮脏的方法可能是在绘图之前抖动剂量:

JitterSize <- rep(c(1.5, 3, 6), table(ToothGrowth$dose))
ToothGrowth $ Jitter <- jitter(ToothGrowth $ dose, JitterSize)
ggplot(data = ToothGrowth, 
       aes(x = Jitter, y=len, color = as.character(dose))) + 
geom_point(size = 4)

根据 abruh 的评论更新。


推荐阅读