2015-08-28 137 views
0

GGPLOT2我有一个名为gdata.csv一个CSV文件,与像数据:了解日期的绘图与R中

id,date,totKm,eLiter,euros,liters,km 
1,24-04-2010,23678,1.180,42.00,35.59,450 
2,16-05-2010,24058,1.200,43.00,35.83,380 
3,27-05-2010,24488,1.160,44.00,37.93,430 
4,12-06-2010,24960,1.180,45.00,38.14,472 

随着GGPLOT2

我只是想绘制在dateeliter线炭GGPLOT2,与此代码:

x_date <- as.Date(gdata$date, format = "%d-%m-%Y") 
ggplot(eliter, aes(x_date, eliter)) + geom_line() 

但是,它返回此错误与类相关: 错误:GGPLOT2不知道如何处理类数字的数据

我试图做一个data.frame但它剧照返回错误:

d <- data.frame(xdate = x_date, yeliter=gdata$eLiter) 
ggplot(d$xdate, aes(d$xdate, d$yeliter)) + geom_line() 

错误:GGPLOT2不知道如何处理类Date的数据

随着剧情

我设法与剧情来做到这一点()函数:

plot(gdata$eLiter~as.Date(gdata$date, "%d-%m-%Y"), type = "s", xlab="Date",ylab="€/Liter", main="€/liter trend", col='blue') 

,它工作正常!但我不能用ggplot做到这一点。

任何人都可以帮助我吗?

非常感谢。

+1

加入'x_date'到数据帧后,还通过ggplot整个数据帧,也就是'ggplot(d,AES(... ))'不'ggplot(d $ xdate,aes(...))'。错误消息告诉你,你正在传递ggplot一个单一的日期向量,它期望一个完整的数据框。 – Gregor

+0

另外,不要在'aes()'里面使用''''。 ggplot有一个'data'参数的一点是你不会重新输入数据帧。 'ggplot(d,aes(x = xdate,y = yeliter))+ geom_line()'。 – Gregor

+0

好@Gregor!非常感谢你! – wanax

回答

1

添加+ scale_x_date()这样的:

Lines <- "id,date,totKm,eLiter,euros,liters,km 
1,24-04-2010,23678,1.180,42.00,35.59,450 
2,16-05-2010,24058,1.200,43.00,35.83,380 
3,27-05-2010,24488,1.160,44.00,37.93,430 
4,12-06-2010,24960,1.180,45.00,38.14,472" 

DF <- read.csv(text = Lines) 
DF$date <- as.Date(DF$date, "%d-%m-%Y") 

library(ggplot2) 
ggplot(DF, aes(date, eLiter)) + 
    geom_line() + 
    scale_x_date() 

screenshot