如何制作具有不同抖动的不同 x 值的 ggplot 图?

How do I make a ggplot graph with different x values having different jitter?

如果我想抖动点,但是我的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 时变宽。

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

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 的评论更新。