按日期着色的ggplot2的散点图

hjw*_*hjw 6 r ggplot2

我正在尝试用日期颜色做散点图.目前我正在做以下事情,但即使图形看起来像我想要的方式,我仍然无法找到一种方法来获取图例的可读格式.我尝试将它们格式化为20140101,但整年都在一个小范围内,即<20141231,并且我在一年内没有得到不同的颜色.

data(cars)
cars['dt'] = seq(Sys.Date(),Sys.Date()-980,-20)

ggplot(cars,aes(speed,dist,colour = as.integer(dt))) + geom_point(alpha = 0.6) +
scale_colour_gradientn(colours=c('red','green','blue')) 
Run Code Online (Sandbox Code Playgroud)

有人可以推荐一个解决方案吗?具体来说,我希望每个日期都是不同颜色/颜色的阴影.(对于我的实际数据,我有大约5 - 6年的每日数据)

在此输入图像描述

Bro*_*ieG 6

只需添加一个贴标机功能:

ggplot(cars,aes(speed,dist,colour=as.integer(dt))) + geom_point(alpha = 0.6) +
  scale_colour_gradientn(colours=c('red','green','blue'), labels=as.Date)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我收到以下错误:as.Date.numeric(breaks)中的错误:必须提供'origin' (2认同)

Ton*_*son 6

解决“必须提供原点错误”的一种方法是为指定了原点的as.Date创建包装器,而不是将其称为贴标签器。

as.Date_origin <- function(x){
  as.Date(x, origin = '1970-01-01')
}

data(cars)
cars['dt'] = seq(Sys.Date(),Sys.Date()-980,-20)

ggplot(cars,aes(speed,dist,colour=as.integer(dt))) + geom_point(alpha = 0.6) +
  scale_colour_gradientn(name = 'Date', colours=c('red','green','blue'), labels=as.Date_origin)
Run Code Online (Sandbox Code Playgroud)