为2列绘制热图:时间与电力

时间:2015-08-20 18:26:53

标签: r heatmap pheatmap

我有2列数据框;其中第一列保存数据为d / m / y h:m(一年),而第二列保存电表读数。例如:

Date.Time           X
13/12/2014 12:00    164
13/12/2014 12:30    278
13/12/2014 13:00    159
13/12/2014 13:30    302
13/12/2014 14:00    249
13/12/2014 14:30    196
.
.
.
14/12/2014 00:00    137
14/12/2014 00:30    71
14/12/2014 01:00    116
14/12/2014 01:30    92

我想每半小时绘制一次热图。我尝试了pheatmapheatmap.2heatmap.3,但错误消息为x' must be a numeric matrix。我只是想知道我可以用这两列绘制地图,还是应该先将数据排列成一行,显示一天的数据,如:

day         12:00 12:30 1:00 1:30
13/12/2014    164  278  159 302 ...
14/12/2014    160  178  129 602 ...

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您不希望将数据从长格式更改为宽格式;你只需要分割日期和时间,这样你就可以在不同的轴上使用它们。以下是我对一些玩具数据所做的事情:

library(ggplot2)

# Make some toy data with a year's worth of observations on every half hour
df <- data.frame(date.time = seq(from = as.POSIXct("2015-01-01"), to = as.POSIXct("2015-12-31"), by=30))
df$X <- rnorm(nrow(df), 100, 25)

# Create separate vectors for date and time, preserving date/time format
df$date <- as.Date(df$date.time)
df$time <- strftime(df$date.time, format="%H:%M:%S")

# Now use ggplot2's geom_tile() to make the heatmap
p <- ggplot(df, aes(x=time, y=date, fill=X)) + geom_tile()
print(p)