Добавление строки в ggplot

Я пытаюсь добавить линию к графику точек, и я не могу понять это. Мои значения y - это числа от 0 до Inf, а мои значения x - из упорядоченного фактора.

Вот код построения графика, который отображает только точки:

g = ggplot() +
  layer(data = ratesdf, mapping = aes(x = age, y = rates), geom = "point", stat="identity") +
  layer(data = ratesdf, mapping = aes(x = age, y = rates), geom = "smooth", stat = "smooth", method = loess)
print(g)

Вот кадр данных:

          rates      age
[0,5)    0.00000000    [0,5)
[5,10)   0.00000000   [5,10)
[10,15)  0.00000000  [10,15)
[15,20)  0.02017059  [15,20)
[20,25)  0.32707402  [20,25)
[25,30)  0.54013169  [25,30)
[30,35)  0.71698958  [30,35)
[35,40)  0.81120944  [35,40)
[40,45)  0.87283637  [40,45)
[45,50)  0.91411649  [45,50)
[50,55)  0.91273334  [50,55)
[55,60)  0.95627322  [55,60)
[60,65)  0.92879819  [60,65)
[65,70)  0.98088779  [65,70)
[70,75)  0.90406674  [70,75)
[75,80)  1.00000000  [75,80)
[80,85)  1.00000000  [80,85)
[85,Inf] 1.00000000 [85,Inf]

Спасибо всем заранее!

(Хэдли, я обещаю купить твою книгу, как только получу свои ежегодные подарочные карты на день рождения :) )


person forkandwait    schedule 19.11.2009    source источник
comment
Трудно сказать без воспроизводимого фрейма данных. Является ли фактор возраста шрифта или что-то еще? Это математическое обозначение интервала - это не то, что я видел раньше в R...   -  person Harlan    schedule 19.11.2009
comment
Посмотрите на этот связанный вопрос: stackoverflow.com/questions/1476185/.   -  person Shane    schedule 19.11.2009
comment
Возраст столбца — это упорядоченный фактор, использующий в качестве меток результат разреза по умолчанию.   -  person forkandwait    schedule 19.11.2009
comment
Лучший способ отправить данные в SO — вставить результаты dput().   -  person Ian Fellows    schedule 19.11.2009


Ответы (2)


Вам нужно будет вручную указать group = 1, потому что по умолчанию ggplot2 группирует по комбинации всех категориальных переменных на графике.

person hadley    schedule 19.11.2009

Я не уверен, что пропустил то, что вы пытаетесь сделать, но в основном мне нужна ступенчатая функция. Например:

rates = c(0.00000000 ,0.00000000 ,0.00000000 ,0.02017059 ,0.32707402, 0.54013169 ,0.71698958 ,0.81120944 ,0.87283637 ,0.91411649 ,0.91273334 ,0.95627322 ,0.92879819 ,0.98088779 ,0.90406674 ,1.00000000 ,1.00000000, 1.00000000 )
age = seq(0, 85, 5)

#ReJig the variables
r2 = sort(rep(rates,2));r2 = r2[1:(length(r2)-1)]
a = sort(rep(age,2));a = a[2:(length(a))]

library(ggplot2)
ggplot() + geom_line(aes(x=a, y=r2))

ХТН

person csgillespie    schedule 19.11.2009