I strongly advise to have a look to the
lubridate() library. It allows to easily manipulate the
date format, and is very powerfull in conjunction with
ggplot2. Have a look to the
time series section of the gallery.
R offers a special data type for dates. It is important to use it since it will make the creation of charts lot easier.
str() function allows to check the type of each
column. In the example beside, the
date column is
recognized as a
## 'data.frame': 6 obs. of 2 variables: ## $ date : Factor w/ 6 levels "2015/03/12","2015/03/13",..: 4 2 3 1 5 6 ## $ value: int 59 49 91 28 75 82
The issue is that your plot is gonna be very disapointing if the date is not recognized properly, as shown beside.
# Create data set.seed(124) date <- paste( "2015/03/" , sample(seq(1,31),6) , sep="") value <- sample(seq(1,100) , 6) data <- data.frame(date,value) # Date and time are recognized as factor: #str(data) # So ploting them works bad --> wrong order, date without value are not represented, plot(data$value~data$date, type="b")
You can use the
as.Date() function to specify that a
column is at the date format. Now, with a bit of customization, we
can get a nice
connected scatterplot from
# Create data set.seed(124) date <- paste( "2015/03/" , sample(seq(1,31),6) , sep="") value <- sample(seq(1,100) , 6) data <- data.frame(date,value) # Let's change the date to the "date" format: data$date <- as.Date(data$date) # So we can sort the table: data <- data[order(data$date) , ] # Easy to make it better now: plot(data$value~data$date , type="b" , lwd=3 , col=rgb(0.1,0.7,0.1,0.8) , ylab="value of ..." , xlab="date" , bty="l" , pch=20 , cex=4) abline(h=seq(0,100,10) , col="grey", lwd=0.8)