Объединение geom_point и geom_line с position_jitterdodge в ggplot2 для двух группирующих факторов

Я попробовал несколько предложений, основанных на нескольких постах здесь, а также прочитал документацию по ggplot2, но этот вопрос немного отличается, и я пока не нашел решения.

Вот фрагмент кода для создания расплавленного фрейма данных, аналогичного тому, с которым я работаю:

a <- c(1,2,3,4,5,6,1,2,3,4,5,6)
b <- c("loss", "draw", "win", "draw", "loss", "win", "loss", "draw", "win", "draw", "loss", "win")
c <- c(2,3,5,4,4,5,4,4,3,5,2,4)
d <- c(rep("x", 6), rep("y", 6))
temp <- data.frame(a,b,c,d)

Я хочу создать точечный график с b на оси x, c на оси y, точки на оси x сгруппированы по d, а линии между ними сгруппированы по a. Если мы начнем с того, что просто поместим точки на график следующим образом, получится хорошо:

ggplot(temp, aes(x=b, y=c, fill=d, colour=d))+
  geom_point(position=position_jitterdodge())

Это точечный график, который я получаю, именно так я и хочу выглядеть. Точки имеют цветовую кодировку в соответствии с коэффициентом d, и, кроме того, они уклоняются в сторону, так что x слева, а y справа.

Теперь все, что я хочу, это соединить точки линиями в соответствии с фактором а.Это макетная версия, которую я сделал в MS Paint о том, как это должно выглядеть. Добавление geom_line и установка группы geom_line в a должно работать ...

ggplot(temp, aes(x=b, y=c, fill=d, colour=d))+
  geom_point(position=position_jitterdodge())+
  geom_line(aes(group=a),position=position_jitterdodge())

... но это не выходит правильно. Линии, которые он создает, имеют правильную длину, чтобы соединить правильные точки, но они едва касаются их, похоже, что они на графике случайным образом. Я бы добавил еще один скриншот, но пока не имею привилегий.

Более того, если я изменю эстетику группы на общую эстетику, вот так:

ggplot(temp, aes(x=b, y=c, fill=d, colour=d, aes(group=a)))+
  geom_point(position=position_jitterdodge())+
  geom_line(position=position_jitterdodge())

... затем точки меняются так, что они находятся в неправильном положении. И в любом случае, линии все еще не соединяются с точками полностью.

Я также попытался указать значения ширины и jitter.width в позиции position_jitterdodge (), и линии и точки по-прежнему не соединяются должным образом. Я также прочитал документацию по ggplot2, несколько предыдущих вопросов о стековом потоке и опробовал большинство комбинаций position_jitter, position_dodge, geom_jitter и т. Д., Но пока не повезло.

Любая помощь будет принята с благодарностью.

Ответы на вопрос(2)

Ваш ответ на вопрос