Как мне сделать график ggplot с разными значениями x, имеющими разный джиттер?

Если я хочу дрожать точки, но моя ось 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.


person abruh    schedule 09.02.2019    source источник


Ответы (1)


Грязным способом может быть дрожание дозы перед графиком:

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)

Обновлено на основе комментариев Абру.

person Likan Zhan    schedule 09.02.2019
comment
Если я сделаю это таким образом, есть ли способ, которым я могу четко указать ручное назначение фактора по дозе? Например, могу ли я вместо дозы * 3 указать фактор вручную как 1,5, 3 и 6? - person abruh; 09.02.2019
comment
Неважно, я вижу, что способ сделать то, о чем я прошу в предыдущем комментарии, состоит в том, чтобы создать еще один столбец с другими указанными весами джиттера, а затем использовать его в качестве аргумента фактора. Спасибо! - person abruh; 10.02.2019