2009-11-19 3 views
4

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

Вот код зарисовки, который отображает только точки:

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) 

Вот dataframe:

  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] 

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

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

+0

Это трудно сказать, не воспроизводимым dataframe. Является ли возраст типа «фактором» или чем-то еще? Это математическое обозначение для интервала не то, что я видел раньше в R ... – Harlan

+0

Посмотрите на этот вопрос: http://stackoverflow.com/questions/1476185/how-to-overlay-a-line- для-ан-Lm-объекта-на-ggplot2-диаграммы рассеяния. – Shane

+0

Возраст столбцов - это упорядоченный множитель, используя результат по умолчанию в виде меток. – forkandwait

ответ

3

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

0

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

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)) 

HTH

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