2015-07-11 3 views
2

У меня есть данные временных рядов, и я хочу построить x vs y и цвет (градиент) по datetime, поэтому я конвертирую DATETIME в числовое, но проблема в том, что оно принимает числовое значение в легенде также.изменить метки в легенде для ggplot2

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))) 

Есть ли способ, чтобы изменить легенды, чтобы показать фактическое DateTime?

ответ

1

Вам необходимо использовать 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) 
+0

удивительным, это то, что я искал ... –

0

Вы должны добавить 3 параметра, чтобы перезаписать атрибут легенд.
1. Легенда название, 2. брейки, 3.labels

scale_colour_gradientn("date", colours=rev(rainbow(6)), 
    breaks = as.numeric(test1_data$date), 
    labels = test1_data$date) 
Смежные вопросы