ggplot2:时间尺度图形问题

时间:2011-09-19 12:53:02

标签: r ggplot2

我有一些来自Garmin的GPS数据我想要缩放时间图。我在网上找到了一些使用ggplot2来做这个的例子,但是它有问题 - 我相信我可能需要重新格式化我的datetime列,但是无法弄清楚搜索'net并查看ggplot2源代码。任何帮助非常感谢。

> library(ggplot2)
> x <- read.csv("tst.csv",header=TRUE,colClasses="character")
> head(x)
  counter HeartRateBpm_AVG LastTimeStamp
1       1           102.25 9/3/2011 7:32
2       2           138.75 9/3/2011 7:33
3       3           138.75 9/3/2011 7:33
4       4           138.75 9/3/2011 7:33
5       5           138.75 9/3/2011 7:33
6       6           138.75 9/3/2011 7:34
> ggplot(data=x,aes(x=LastTimeStamp,y=HeartRateBpm_AVG)) + scale_x_date(format = "%S") + geom_line()

2 个答案:

答案 0 :(得分:2)

我不相信您可以使用该输入过程来获取该data.frame。您只在“colClasses”向量中有一个项目。当我使用你的方法时,结果与我使用readLines的结果差别不大。您的日期 - 时间列不打印,就好像它以可以在没有格式规范的情况下转换的方式进行打印。请尝试改为:

x <- read.csv(textConnection("  counter, HeartRateBpm_AVG, LastTimeStamp
 1 ,         102.25, 9/3/2011 7:32
 2  ,        138.75 ,9/3/2011 7:33
 3   ,       138.75, 9/3/2011 7:33
 4    ,      138.75 ,9/3/2011 7:33
 5     ,     138.75, 9/3/2011 7:33
 6      ,    138.75 ,9/3/2011 7:34"), 
         header=TRUE,  colClasses=c("numeric", "numeric", "character"))
# Then the formating as date-time works well.
x$LastTimeStamp2 <- as.POSIXct(x$LastTimeStamp, format="%m/%d/%Y %H:%M")
 head(x)

答案 1 :(得分:0)

这是一个解决方案

x = transform(x, LastTimeStamp = as.POSIXct(LastTimeStamp))
qplot(format(LastTimeStamp), HeartRateBpm_Avg, data = x)