无法使用scale包格式化xaxis

use*_*980 3 r ggplot2

我有这些数据,并尝试使用ggplot2并缩放格式化xaxis,具有日期和时间.

dput(head(pp))
structure(list(DateTime = structure(c(1362405600, 1362409200, 
1362412800, 1362416400, 1363006800, 1363010400), class = c("POSIXct", 
"POSIXt"), tzone = ""), Day = structure(c(1L, 1L, 1L, 1L, 1L, 
1L), .Label = c("Fri", "Mon", "Sat", "Sun", "Thu", "Tue", "Wed"
), class = "factor"), Total_Logins = c(818832L, 801771L, 787508L, 
731672L, 748872L, 727140L), Unique_Logins = c(732152L, 713380L, 
701348L, 647321L, 672848L, 649453L), Date = structure(c(15768, 
15768, 15768, 15768, 15775, 15775), class = "Date")), .Names = c("DateTime", 
"Day", "Total_Logins", "Unique_Logins", "Date"), row.names = c(1498L, 
1499L, 1500L, 1501L, 1666L, 1667L), class = "data.frame")

library(ggplot2)
library(scales)

ggplot(subset(pp, Day=="Fri"), aes(DateTime, Total_Logins, group=1)) + 
    geom_line() + 
    geom_smooth(method="loess", se=T, size=1) + 
    scale_x_date(breaks = "1 day", labels=date_format("%b-%d-%Y %H"))
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

错误:输入无效:date_trans仅适用于Date类的对象

我的DateTime列已经格式化了日期.任何想法,我在这里做错了什么?

在此输入图像描述

Did*_*rts 5

由于列DateTime包含日期和时间(类POSIXct),您还希望显示x轴标签的小时,scale_x_datetime()而不是使用scale_x_date().

+scale_x_datetime(breaks = "1 day", labels=date_format("%b-%d-%Y %H"))
Run Code Online (Sandbox Code Playgroud)

要更改显示x轴刻度的中断,您可以更改breaks="1 day"为,例如,更改为breaks="6 hours".另一种可能性是仅在实际值可用的地方显示休息时间.如果轴文本项太多,则可以更改文本的方向.

+scale_x_datetime(breaks = unique(pp$DateTime), labels=date_format("%b-%d-%Y %H"))+
        theme(axis.text.x=element_text(angle=90,vjust=0.5))
Run Code Online (Sandbox Code Playgroud)