2015-06-21 3 views
1

У меня есть несколько данных наборов аналогичных https://www.dropbox.com/s/j9ihawgfqwxmkgc/pred.csv?dl=0ggplot geom_line оси даты не работает

Загрузка их из CSV и затем Plotting работает отлично

predictions$date <- as.Date(predictions$date) 
plot(predictions$date, predictions$pct50) 

Но когда я хочу использовать GGPLOT рисовать эти данные предсказал точки в сюжет, чтобы сравнить их с исходными точками, такими как:

p = ggplot(theRealPastDataValues,aes(x=date,y=cumsum(amount)))+geom_line() 

Эта команда

p + geom_line(predictions, aes(x=as.numeric(date), y=pct50)) 

генерирует следующее сообщение об ошибке:

ggplot2 doesn't know how to deal with data of class uneval 

Но первые plot(predictions$date, predictions$pct50) работы с данными, которые я не понимаю, что это неправильно.

Редактировать

dput(predictions[1:10, c("date", "pct50")]) 
structure(list(date = c("2009-07-01", "2009-07-02", "2009-07-03", 
"2009-07-04", "2009-07-05", "2009-07-06", "2009-07-07", "2009-07-08", 
"2009-07-09", "2009-07-10"), pct50 = c(4276, 4076, 4699.93, 4699.93, 
4699.93, 4699.93, 4664.76, 4627.37, 4627.37, 4627.37)), .Names = c("date", 
"pct50"), row.names = c(NA, 10L), class = "data.frame") 

Edit 2

я изменить

p + geom_line(data = predictions, aes(x=as.numeric(date), y=pct50)) 

и ошибка изменен:

Invalid input: date_trans works with objects of class Date only 
Zusätzlich: Warning message: 
In eval(expr, envir, enclos) : NAs created 

, так что я думаю, что намек на How to deal with "data of class uneval" error from ggplot2? (см комментарии) хорошая идея, до сих пор сюжет не работает.

+0

'? Geom_line' показывает первый аргумент' отображение = NULL'. Попробуйте явно указать, что 'data = predictions' – tospig

+0

[Этот ответ] (http://stackoverflow.com/a/16486873/4002530) похож на – tospig

+1

уверен - см. Редактирование –

ответ

3

Ваш первый вопрос (Edit 2) потому, что ?geom_line использует mapping=NULL в качестве первого аргумента, так что вы должны явно заявить первый аргумент data

p + geom_line(data = predictions, aes(x=as.numeric(date), y=pct50)) 

similar question

Ваш второй вопрос потому, что ваш predictions$date - вектор символов, а при использовании as.numeric вводится NA s. Если вы хотите, числовые, нужно отформатировать его в качестве даты первого, а затем преобразовать его в цифровой

as.numeric(as.Date(predictions$date), format="%Y%m%d") 
Смежные вопросы