Подтвердить что ты не робот

Ggplot2: линия, соединяющая средства сгруппированных данных

Я пытаюсь сгруппировать одну переменную моих данных по другому, а затем построить линию через средства. Он отлично работает, когда обе переменные являются числами. Однако у меня проблема, когда переменная группировки является фактором. У меня тут макет.

x <- sample(1:3, 40, replace=T)
y <- rnorm(40)

df1 <- data.frame(x, y)
qplot(x, y, data=df1) + stat_summary(fun.y=mean, colour="red", geom="line")

alt text

Это выглядит великолепно. Однако, если переменная x является фактором, я не получаю строку.

df2 <- data.frame(x=as.factor(x), y)
qplot(x, y, data=df2) + stat_summary(fun.y=mean, colour="red", geom="line")

alt text

Есть ли что-то, что я могу сделать, чтобы отобразить эту строку?

Ps. geom = "point" работает, но не geom = "line"

qplot(x, y, data=df2) + stat_summary(fun.y=mean, colour="red", geom="point")

alt text

Спасибо за чтение!

4b9b3361

Ответ 1

ggplot2 намеренно делает немного сложным рисовать линии по фактору оси x, потому что вам нужно убедиться, что это имеет смысл. Если ваша ось x была "Нью-Йорк", "Филадельфия" и "Бостон", было бы неплохо провести линию, соединяющую их.

Однако, считая, что ваша переменная x имеет значимый порядок, вы должны определить эстетику group, чтобы нарисовать нужную строку. Здесь group = 1.

qplot(x, y, data=df2) + 
  stat_summary(fun.y=mean, colour="red", geom="line", aes(group = 1))

Если вы просто добавили geom_line() к сюжету, подобному этому, вам нужно будет определить переменную группировки аналогичным образом.