R 在POSIXct时间内绘图时使用ggplot设置x轴最小值和最大值
我试图绘制随时间变化的值,但得到错误:R 在POSIXct时间内绘图时使用ggplot设置x轴最小值和最大值,r,datetime,ggplot2,plot,posixct,R,Datetime,Ggplot2,Plot,Posixct,我试图绘制随时间变化的值,但得到错误: Error: Invalid input: date_trans works with objects of class Date only 我和其他人一起解决了以前的问题。我想设置x轴的最小值和最大值,以便在没有数据的绘图的最末端消除空白 此代码调用一个绘图,但没有正确的x轴 ggplot(dta, aes(x= WeekStarting, y = AvgWeekEle, group = IndID))+ geom_line(size
Error: Invalid input: date_trans works with objects of class Date only
我和其他人一起解决了以前的问题。我想设置x轴的最小值和最大值,以便在没有数据的绘图的最末端消除空白
此代码调用一个绘图,但没有正确的x轴
ggplot(dta, aes(x= WeekStarting, y = AvgWeekEle, group = IndID))+
geom_line(size = 1)+
theme(axis.text.x=element_text(angle=30, hjust=1))
我试图用下面的代码设置x轴的极限,这会产生错误
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")))
下面是我的数据的dput()
。我使用的是最新版本的R,运行的是Windows7
提前谢谢
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))
dta因为您的x变量属于as.POSIXct
类,所以应该改用scale\u x\u datetime
scale\u x\u date
用于类变量date
(如错误消息所示)
“要删除绘图最末端的空格”,可以在scale
调用中使用expand
参数(请参阅)。将expand
设置为零,将删除数据和轴之间的默认小间隙
您还可以查看如何在scale
调用(或xlim
)中使用limits
参数,或使用coord\u cartesian
进行“缩放”
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))
因为您的x变量属于.POSIXct的类,所以您应该使用scale\u x\u datetime
scale\u x\u date
用于类变量date
(如错误消息所示)
“要删除绘图最末端的空格”,可以在scale
调用中使用expand
参数(请参阅)。将expand
设置为零,将删除数据和轴之间的默认小间隙
您还可以查看如何在scale
调用(或xlim
)中使用limits
参数,或使用coord\u cartesian
进行“缩放”
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))
是的,我在链接的帖子中看到了这个建议。但根据您的建议,我得到了错误“无效输入:time_trans仅适用于类POSIXct的对象”,因为这两个建议都导致了错误,我想我应该从一开始就开始。对于您建议的第二个错误有什么想法吗?更改为scale\u x\u datetime
对我来说很有用。注意,您还需要将限制=
从as.Date
更改为limits=as.POSIXct
尴尬和谦卑。。。谢谢我很乐意接受答案……是的,我在链接的帖子中看到了这个建议。但根据您的建议,我得到了错误“无效输入:time_trans仅适用于类POSIXct的对象”,因为这两个建议都导致了错误,我想我应该从一开始就开始。对于您建议的第二个错误有什么想法吗?更改为scale\u x\u datetime
对我来说很有用。注意,您还需要将限制=
从as.Date
更改为limits=as.POSIXct
尴尬和谦卑。。。谢谢我很乐意接受你的回答。。。