2014-02-07 3 views
-2

Я хотел бы добавить среднее значение valuus к окнам на участке разброса, который у меня есть. Я создал график рассеяния с ggplot2Земельный участок на графике R

p <- ggplot(mtcars, aes(wt, mpg)) 
p + geom_point() 

Это даст точечный график, но я woudl хотел бы добавить добавить среднее окно (скажем, размер равен 1) и сюжет этой точки среднего значения в виде линии. Кроме того, я хотел бы иметь вертикальные полосы в каждой точке, чтобы указать дисперсию.

Mtcars является набор данных стандарт доступен в ggplot 2

+0

среднее значение, что, 'wt'? В какой переменной? –

+0

y-Axis..если вы просто снимаете окна по оси x 1 единицы и усредняете все значения в этом окне для своего значения y – user3069326

+0

дисперсии точки? – rawr

ответ

2

Это использует новую библиотеку dplyr.

library(dplyr) 
forLines <- mtcars %.% 
      group_by(cut(wt, breaks = 6)) %.% 
      summarise(mean_mpg = mean(mpg), mean_wt = mean(wt)) 
p + 
    geom_point(size=5) + 
    geom_boxplot(aes(group = cut(wt, breaks = 6))) + 
    geom_line(data=forLines,aes(x=mean_wt,y=mean_mpg)) 

enter image description here

+0

эй ... можно ли все-таки подключить средства с линией, а потом тоже иметь эоригинальную точку, чтобы разброс участков по-прежнему существовал на вашем участке? – user3069326

+0

проблема в том, что исходная диаграмма рассеяния исчезает и что между средствами нет линии ... если это можно сделать, что woudl действительно будет отличным – user3069326

0

Является ли это то, что вы хотите?

p <- ggplot(mtcars, aes(wt, mpg)) 
p + geom_point() + geom_smooth(aes(wt, mpg, group=1), method = "lm") 

enter image description here

+0

эй ... это выглядит действительно хорошо ... coudl Я спрашиваю, почему ваши и Решение Свена отличается? Это так, не так ли? – user3069326

+0

Как сказал @Sven в своем ответе, я догадался, что линейная подгонка - это то, что вы на самом деле «искали», хотя ответ Свена на то, что вы «задавали» в своем вопросе. – harkmug

+0

хорошо ... Ваша линейная посадка принимает все значения оси y и выполняет линейную регрессию или оценивает среднее значение? – user3069326

1

Может быть, это то, что вы ищете:

library(ggplot2) 

s <- seq(0, ceiling(max(mtcars$wt)), 1) 
ind <- as.integer(cut(mtcars$wt, s)) 

myfun <- function(i) 
    c(y = mean(i), ymin = mean(i) - var(i), ymax = mean(i) + var(i)) 

ggplot(mtcars, aes(wt, mpg)) + 
    geom_point() + 
    stat_summary(fun.data = myfun, aes(group = ind, x = ind - .5), 
       colour = "red") + 
    stat_summary(fun.y = mean, aes(x = ind - .5), geom = "line", 
       colour = "red") 

enter image description here

+0

эй ... это выглядит действительно хорошо ... coudl Я спрашиваю, почему ваше решение и решение rmk отличаются? Это так, не так ли? – user3069326

+1

@ user3069326 В графике по mk нанесена линейная посадка. Он не зависит от окон с 1 блоком. –

+0

как в линейной поправке на все значения, не зависящие от значений, которые производятся в нескольких окнах, а просто через все значения? – user3069326

Смежные вопросы