我的数据如下:
> head(data)
date price volume
1 2011-06-26 17:16:05 17.51001 2.000
2 2011-06-26 20:50:00 14.80351 2.981
3 2011-06-26 20:51:00 14.90000 2.000
4 2011-06-26 20:52:00 14.89001 0.790
5 2011-06-26 20:53:00 15.00000 1.000
6 2011-06-26 21:05:01 16.20000 6.500
> str(head(data))
'data.frame': 6 obs. of 3 variables:
$ date : POSIXct, format: "2011-06-26 17:16:05" "2011-06-26 20:50:00" "2011-06-26 20:51:00" "2011-06-26 20:52:00" ...
$ price : num 17.5 14.8 14.9 14.9 15 ...
$ volume: num 2 2.98 2 0.79 1 ...
当我这样绘制时:
someColors <- colorRampPalette(c("black", "blue", "orange", "red"), space="Lab")
smoothScatter(data, colramp=someColors)
我几乎完全得到了我正在寻找的东西,但它将posix日期转换为数字。如何更有效地设置x标签,以便我的东西更具可读性?
编辑:我可以得到我想要的近似值:
smoothScatter(data, colramp=someColors, xaxt="n")
axis(1, at=data$date,
labels=lapply(data$date, function(d) strftime(d, "%F")),
tick=FALSE)
但是,这非常缓慢。看起来我应该能够准备数据或建议标签抽屉了一点。
答案 0 :(得分:2)
就速度而言,指定用于x轴标签的日期范围可能会有所帮助。例如:
days <- seq(min(data$date), max(data$date), by = 'month')
axis(1, at=days,
labels=strftime(days, "%F"),
tick=FALSE)
它可能也有助于将时间四舍五入到最近的一天:
days <- seq(as.Date(min(data$date)), as.Date(max(data$date)), by = 'month')