R 带有ggplot scale_x_datetime的轴标签和限制
我想得到很好的图表,以日期、工作日和时间作为x轴标签R 带有ggplot scale_x_datetime的轴标签和限制,r,ggplot2,R,Ggplot2,我想得到很好的图表,以日期、工作日和时间作为x轴标签 test <- data.frame(date=seq(as.POSIXct("2012-02-09 00:00:00",tz="CET"),as.POSIXct("2012-02-11 00:00:00",tz="CET"),"hours" ), value= runif(49) ) ggplot() + geom_line(data=test, aes(x=as.POSIXct(date), y=value)) + theme(t
test <- data.frame(date=seq(as.POSIXct("2012-02-09 00:00:00",tz="CET"),as.POSIXct("2012-02-11 00:00:00",tz="CET"),"hours" ),
value= runif(49) )
ggplot() + geom_line(data=test, aes(x=as.POSIXct(date), y=value)) +
theme(text=element_text(size=16),
legend.text=element_text(size=16),
axis.text=element_text(size=16, colour="black"),
panel.background = element_rect(fill = 'white', colour = 'black'),
axis.title.y = element_text(size=16, vjust = 0.3),
axis.title.x = element_text(size=16, vjust = 0),
legend.key=element_rect(fill="white")) +
scale_x_datetime( breaks = date_breaks("1 days"), labels = date_format("%a-%d\n%H:%M", tz="CET"),
,limits = c(as.POSIXct("2012-02-09 00:00:00 CET"),as.POSIXct("2012-02-11 00:00:00 CET")))
test如果创建日期时间向量并将其赋给breaks
参数,则可以完全控制中断。下面我用seq
完成了这项工作
设置expand=c(0,0)
将停止ggplot,并提供额外的空间
ggplot(data = test, aes(x = as.POSIXct(date), y = value)) +
geom_line() +
scale_x_datetime(
breaks = seq(as.POSIXct("2012-02-09 00:59:00 CET"),
as.POSIXct("2012-02-11 00:59:00 CET"), "8 hours"),
labels = date_format("%a-%d\n%H:%M", tz = "CET"),
expand = c(0, 0),
limits = c(
as.POSIXct("2012-02-09 00:00:00 CET"),
as.POSIXct("2012-02-11 00:00:00 CET")
)
)
有了这个限制,我收到了一条警告消息:“删除了9行,其中包含缺少的值(geom_path)”
我使用了Richard建议的展开
,下面是代码和图:
test <- data.frame(date=seq(as.POSIXct("2012-02-09 00:00:00",tz="CET"),as.POSIXct("2012-02-11 00:00:00",tz="CET"),"hours" ),
value= runif(49) )
ggplot() + geom_line(data=test, aes(x=as.POSIXct(date), y=value)) +
theme(text=element_text(size=16),
legend.text=element_text(size=16),
axis.text=element_text(size=16, colour="black"),
panel.background = element_rect(fill = 'white', colour = 'black'),
axis.title.y = element_text(size=16, vjust = 0.3),
axis.title.x = element_text(size=16, vjust = 0),
legend.key=element_rect(fill="white")) +
scale_x_datetime( breaks = date_breaks("8 hours"),
labels = date_format("%a-%d\n%H:%M", tz="CET"),
expand = c(0,0))
test我的猜测是使用expand
和breaks
参数将有助于回答前两个问题。在dplyr 1.0.0中,date\u format()。重要的是,它不是由ggplot导入的,因此必须使用长格式scales::label_date()
test <- data.frame(date=seq(as.POSIXct("2012-02-09 00:00:00",tz="CET"),as.POSIXct("2012-02-11 00:00:00",tz="CET"),"hours" ),
value= runif(49) )
ggplot() + geom_line(data=test, aes(x=as.POSIXct(date), y=value)) +
theme(text=element_text(size=16),
legend.text=element_text(size=16),
axis.text=element_text(size=16, colour="black"),
panel.background = element_rect(fill = 'white', colour = 'black'),
axis.title.y = element_text(size=16, vjust = 0.3),
axis.title.x = element_text(size=16, vjust = 0),
legend.key=element_rect(fill="white")) +
scale_x_datetime( breaks = date_breaks("8 hours"),
labels = date_format("%a-%d\n%H:%M", tz="CET"),
expand = c(0,0))