Отображение дня и часа временных данных вместе

У меня есть рамка с данными о температуре и времени. Это выглядит так:

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

person Pardal R    schedule 22.06.2015    source источник


Ответы (1)


Я бы создал элемент времени, который сочетает в себе дату и час. Затем вы можете использовать это как ось 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))

введите здесь описание изображения

person user20650    schedule 22.06.2015