Reputation: 3441
I am trying to plot values over time and am getting the error:
Error: Invalid input: date_trans works with objects of class Date only
I worked through earlier problems with this post as well as the post here. I want to set the min and max of the x- axis to remove the blanks space on the extreme ends of plot where there is no data.
This code calls a plot, but without the corrected x- axis.
ggplot(dta, aes(x= WeekStarting, y = AvgWeekEle, group = IndID))+
geom_line(size = 1)+
theme(axis.text.x=element_text(angle=30, hjust=1))
I tried to set the limits of the x-axis using scale_x_date
with the code below - which produces the error.
ggplot(dta, aes(x= WeekStarting, y = AvgWeekEle, group = IndID))+
geom_line(size = 1)+
theme(axis.text.x=element_text(angle=30, hjust=1))+
scale_x_date(breaks = "1 week", labels=date_format("%b-%d-%Y"),
limits = as.Date(c("2014-01-6","2014-02-15")))
A dput()
of my data are below. I am using the newest version of R and am running Windows 7.
Thanks in advance.
dta <- structure(list(IndID = c("BHS_011_A", "BHS_011_A", "BHS_011_A",
"BHS_011_A", "BHS_011_A", "BHS_011_A", "BHS_011_A", "BHS_011_A",
"BHS_015_A", "BHS_015_A", "BHS_015_A", "BHS_015_A", "BHS_015_A",
"BHS_015_A", "BHS_015_A", "BHS_015_A", "BHS_018_A", "BHS_018_A",
"BHS_018_A", "BHS_018_A", "BHS_018_A", "BHS_018_A", "BHS_018_A",
"BHS_018_A"), WeekStarting = structure(c(1388905200, 1389510000,
1390114800, 1390719600, 1391324400, 1391929200, 1392534000, 1393138800,
1388905200, 1389510000, 1390114800, 1390719600, 1391324400, 1391929200,
1392534000, 1393138800, 1388905200, 1389510000, 1390114800, 1390719600,
1391324400, 1391929200, 1392534000, 1393138800), class = c("POSIXct",
"POSIXt"), tzone = ""), AvgWeekEle = c(1717.21428571429, 1770.07142857143,
1737.53571428571, 1673.32142857143, 1648.42857142857, 1760.71428571429,
1668.48148148148, 1654.5, 1643.5, 1794.85714285714, 1740.64285714286,
1664.73076923077, 1704.73076923077, 1685.2962962963, 1707.89285714286,
1661.46428571429, 1702.87096774194, 1691.17647058824, 1653.41176470588,
1650.30303030303, 1741.54545454545, 1652.33333333333, 1573.125,
1570.82352941176)), .Names = c("IndID", "WeekStarting", "AvgWeekEle"
), class = "data.frame", row.names = c(3362L, 3363L, 3364L, 3365L,
3366L, 3367L, 3368L, 3369L, 3470L, 3471L, 3472L, 3473L, 3474L,
3475L, 3476L, 3477L, 3535L, 3536L, 3537L, 3538L, 3539L, 3540L,
3541L, 3542L))
Upvotes: 2
Views: 3652
Reputation: 67788
Because your x variable is of class as.POSIXct
you should use scale_x_datetime
instead. scale_x_date
is for variables of class Date
(as the error message may suggest).
"To remove the blanks space on the extreme ends of plot", you may use the expand
argument in your scale
call (see here). Setting expand
to zero, removes the default, small gap between data and axes.
You may also have a look at this post to use the limits
argument in the scale
call (or xlim
), or use coord_cartesian
to 'zoom'.
ggplot(dta, aes(x= WeekStarting, y = AvgWeekEle, group = IndID)) +
geom_line(size = 1) +
theme(axis.text.x=element_text(angle = 30, hjust = 1)) +
scale_x_datetime(breaks = "1 week", labels = date_format("%b-%d-%Y"),
expand = c(0, 0))
Upvotes: 6