我有时间序列数据,我想通过datetime绘制x vs y和颜色(梯度),所以我将datetime转换为数字,但问题是它在图例中也需要数字值。
date x y
2012-01-01 14:25:00 461.2339 15.83793
2012-01-01 14:30:00 459.8557 15.80326
代码
ggplot(test1_data,aes(x , y ,colour = as.numeric(date))) +
geom_point() +
scale_colour_gradientn(colours=rev(rainbow(6)))
是否有办法编辑图例显示实际日期时间?
需要使用breaks
和labels
。这里有一个例子。您需要更改格式以适应您的实际数据。
library("ggplot2")
test1_data <- read.csv(text = "date,x,y
2012-01-01 14:25:00,461.2339,15.83793
2012-01-01 14:30:00,459.8557,15.80326",
header = TRUE,
colClasses = c("POSIXct", rep("numeric", 2)))
date_breaks <- diff(range(test1_data$date)) * 0:4 / 4 +
min(test1_data$date)
date_labels <- format(date_breaks, "%H:%M:%S")
ggplot(test1_data,aes(x , y ,colour = as.numeric(date))) +
geom_point() +
scale_colour_gradientn(colours=rev(rainbow(6)),
breaks = as.numeric(date_breaks),
labels = date_labels)
您应该添加3个参数来覆盖传奇的属性。
1. 传奇标题,2。休息,标签
scale_colour_gradientn("date", colours=rev(rainbow(6)),
breaks = as.numeric(test1_data$date),
labels = test1_data$date)