一起绘制时间数据日和小时

时间:2015-06-22 15:39:18

标签: r ggplot2 days temperature hour

我有一个包含温度数据和时间的框架。它看起来像这样:

area	day	hour	temperature
d1	09_11_2013	01H0min0s	18,723
d1	09_11_2013	04H0min0s	17,558
d1	09_11_2013	07H0min0s	16,963
d1	09_11_2013	10H0min0s	22,753
d1	09_11_2013	13H0min0s	28,468
d1	10_11_2013	01H0min0s	21,318
d1	10_11_2013	04H0min0s	20,126
d1	10_11_2013	07H0min0s	19,151
d1	10_11_2013	10H0min0s	25,404
d1	10_11_2013	13H0min0s	29,890
i1	09_11_2013	01H0min0s	18,485
i1	09_11_2013	04H0min0s	17,368
i1	09_11_2013	07H0min0s	16,844
i1	09_11_2013	10H0min0s	24,171
i1	09_11_2013	13H0min0s	28,072
i1	10_11_2013	01H0min0s	21,246
i1	10_11_2013	04H0min0s	20,103
i1	10_11_2013	07H0min0s	19,151
i1	10_11_2013	10H0min0s	27,087
i1	10_11_2013	13H0min0s	28,518

在我的例子中,我每天每小时有两个区域和五个温度。 我使用这个函数(包ggplot2),但我也想绘制列时间。

ggplot(data, aes(x=day, y=temperature, colour=area, group=area)) + geom_point()

1 个答案:

答案 0 :(得分:2)

我会创建一个结合日期和小时的时间元素。然后,您可以将其用作x轴,并使用scale_x_datetime来更好地控制品牌和标签。

# Your data
dat <- read.table(header=T, text=
"area  day  hour    temperature
d1  09_11_2013  01H0min0s   18,723
d1  09_11_2013  04H0min0s   17,558
d1  09_11_2013  07H0min0s   16,963
d1  09_11_2013  10H0min0s   22,753
d1  09_11_2013  13H0min0s   28,468
d1  10_11_2013  01H0min0s   21,318
d1  10_11_2013  04H0min0s   20,126
d1  10_11_2013  07H0min0s   19,151
d1  10_11_2013  10H0min0s   25,404
d1  10_11_2013  13H0min0s   29,890
i1  09_11_2013  01H0min0s   18,485
i1  09_11_2013  04H0min0s   17,368
i1  09_11_2013  07H0min0s   16,844
i1  09_11_2013  10H0min0s   24,171
i1  09_11_2013  13H0min0s   28,072
i1  10_11_2013  01H0min0s   21,246
i1  10_11_2013  04H0min0s   20,103
i1  10_11_2013  07H0min0s   19,151
i1  10_11_2013  10H0min0s   27,087
i1  10_11_2013  13H0min0s   28,518", stringsAsFactors=F, dec=",")

# Create a data-time vector
dat$time <- as.POSIXct(
              paste(dat$day, gsub("[^0-9]+", ":", dat$hour)),
              format="%d_%m_%Y %H:%M:%S")

# Plot
library(ggplot2)

ggplot(dat, aes(x=time, y=temperature, colour=area)) + 
           geom_point() +
           theme(axis.text.x=element_text(size=10))

enter image description here