2015-05-13 3 views
6

У меня есть Database и хочу показать фигуру с использованием stat_smooth.R: stat_smooth groups (ось x)

Я могу показать avg_time против Scored_Probabilities фигуры, которая выглядит следующим образом:

c <- ggplot(dataset1, aes(x=Avg.time, y=Scored.Probabilities)) 
c + stat_smooth() 

enter image description here

Но при изменении Avg.time времени или эпохи, возникает ошибка:

c <- ggplot(dataset1, aes(x=Age, y=Scored.Probabilities)) 
c + stat_smooth() 
error: geom_smooth: Only one unique x value each group. Maybe you want aes(group = 1)? 

Как я мог исправить это?

+0

'stat_smooth' работает только с непрерывными переменными. Ваша переменная 'age' является символьной переменной. Я могу только предположить, что переменная 'time' также не сохраняется как время, а вместо символа. Сначала вам необходимо преобразовать переменные в числовые. – shadow

ответ

6

сообщение об ошибке говорит, чтобы установить group=1, делая это дает другую ошибку

ggplot(dataset1, aes(x=Age, y=Scored.Probabilities, group=1))+stat_smooth() 
geom_smooth: method="auto" and size of largest group is >=1000, so using gam with formula: y ~ s(x, bs = "cs"). Use 'method = x' to change the smoothing method. 
Error in smooth.construct.cr.smooth.spec(object, data, knots) : 
    x has insufficient unique values to support 10 knots: reduce k. 

В настоящее время число уникальных значений x недостаточно.

Итак, два решения: i) с использованием другой функции, такой как mean, ii) с использованием джиттера для перемещения немного возраста.

ggplot(dataset1, aes(x=Age, y=Scored.Probabilities, group=1))+ 
geom_point()+ 
stat_summary(fun.y=mean, colour="red", geom="line", size = 3) # draw a mean line in the data 

enter image description here

Или

ggplot(dataset1, aes(x=jitter(as.numeric(Age)), y=Scored.Probabilities, group=1))+ 
geom_point()+stat_smooth() 

Обратите внимание на использование as.numeric, поскольку Age является фактором.

enter image description here

+0

на фактор use 'as.numeric (as.character (variable))', 'as.numeric (variable)' может не вернуть ожидаемое значение –

+0

, вы вероятно правы, не стесняйтесь редактировать ответ –