Используя position_jitter создает случайное дрожание для предотвращения сверхграфического изображения точек данных.
В ниже я использовал пример бейсбольной статистики для иллюстрирования моей проблемы. Когда я отображаю те же данные на графике с двумя слоями, тот же вызов дрожания дрожит геоны немного по-другому. Это имеет смысл, потому что он, по-видимому, генерирует случайное дрожание независимо в двух вызовах, но приводит к проблеме, которую Вы видите в моем графике ниже.
p=ggplot(baseball,aes(x=round(year,-1),y=sb,color=factor(lg)))
p=p+stat_summary(fun.data="mean_cl_normal",position=position_jitter(width=3,height=0))+coord_cartesian(ylim=c(0,40))
p+stat_summary(fun.y=mean,geom="line",position=position_jitter(width=3,height=0))
Хотя точки значения погрешности и строка относятся к тем же данным, они разделяются — строки и точки не соединяются.
Существует ли обходное решение для этого? Я думал, что уловка положения могла бы быть ответом, но это, кажется, не работает с этими видами графиков. С другой стороны, возможно, существует некоторый способ заставить вызов mean_cl_normal также добавлять строки?
Это слабое место в текущем синтаксисе ggplot2 - нет никакого способа обойти его, кроме как добавить джиттер самостоятельно.
Или вы можете сделать что-то вроде этого:
ggplot(baseball, aes(round(year,-1) + as.numeric(factor(lg)), sb, color = factor(lg))) +
stat_summary(fun.data="mean_cl_normal") +
stat_summary(fun.y=mean,geom="line") +
coord_cartesian(ylim=c(0,40))
Я так думаю, установив одно и то же начальное число в двух экземплярах:
p=ggplot(baseball,aes(x=round(year,-1),y=sb,color=factor(lg)))
myseed = 2010
set.seed(myseed)
p=p+stat_summary(fun.data="mean_cl_normal",
position=position_jitter(width=3,height=0))+coord_cartesian(ylim=c(0,40))
set.seed(myseed)
p+stat_summary(fun.y=mean,geom="line",
position=position_jitter(width=3,height=0))
Это гарантирует, что генератор случайных чисел отправляется обратно в ту же начальную позицию, которая использовалась при первоначальном вызове. Однако я не знаю, как вы можете извлечь случайные приращения, добавленные к значениям.