How to plot when Date and hour in separate field using ggplot in R

我怕爱的太早我们不能终老 提交于 2019-12-12 20:41:06

问题


I have the following data frame

head(d[, c(1,2,7)], 10)
         date hour total_sess
2  2014-04-06   00        115
3  2014-04-07   01          3
4  2014-04-07   16          3
5  2014-04-07   21        115
6  2014-04-08   00        115
7  2014-04-08   06          3
8  2014-04-09   05          3
9  2014-04-09   11        201
10 2014-04-09   14          3
11 2014-04-09   20          3

How do i use ggplot to plot a bar chart with X-Axis = hour (indicating date along the Axis) and Y Axis as total_sess

I tried the following but was unable to generate a continuous flow

ggplot(data = d, aes(x = hour, y = total_sess, fill = factor(date)) +
 geom_bar(stat='identity') +
 theme(axis.text.x = element_text(angle = 90, hjust = 0.5))

回答1:


I would convert columns 'date' and 'hour' to as.POSIXct to use as x axis. In the data you show, 'hour' seems to be a character variable (leading zeroes), and you can create a time variable like this:

d$time <- as.POSIXct(paste0(d$date, " ", d$hour, ":00:00"))

The 'time' variable can be used as x variable, and colour by date isn't really necessary (but can of course be added if you wish).

ggplot(data = d, aes(x = time, y = total_sess)) +
  geom_bar(stat='identity') +
  theme_bw()

When your x variable is of class as.POSIXct, you may use scale_x_datetime. Then it's easy to format the x axis with the breaks = date_breaks and labels = date_format arguments (load library(scales). See examples here




回答2:


What about using geom_tile:

library(lubridate)
library(ggplot2)
ggplot(data = data, aes(x = hour, y = ymd(date))) +
  geom_tile(aes(fill=total_sess)) +
  theme_bw()



来源:https://stackoverflow.com/questions/22948503/how-to-plot-when-date-and-hour-in-separate-field-using-ggplot-in-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!