我已經從資料集中的時間戳中洗掉了日期,因此我可以按小時繪制登錄資訊。
MV1$starttime <- format(MV1$earliestlog,format='%H:%M:%S')
MV1$starttime <- as.POSIXct(paste(Sys.Date(), MV1$starttime), #Adds todays date
format = "%Y-%m-%d %H:%M:%S")
當我用它繪制它時
MV1 %>%
ggplot(aes(x = starttime))
geom_histogram(binwidth=30, )
labs(title = "logins vs daytime between 2018 and 2020",
subtitle = "Source: , Bin size = 30",
x = "Time of day",
y = "logins")
我得到了我想要的,除了我想從 x 軸上洗掉今天的日期并且只保留每小時的時間標簽。
我嘗試添加
scale_x_discrete(breaks=c(as.POSIXct(paste(Sys.Date(), "00:00"))),
labels=c("00:00"))
但我收到此錯誤:
錯誤new_mapped_discrete():!mapped_discrete物件只能從數字向量創建
我也試圖擺脫我的 df 中的日期,但這似乎也不起作用/然后是不可繪制的,因為那只是一個字符列。看起來POSIX需要一個日期......
MV1$starttime <- format(as.POSIXct(strptime(MV1$starttime, "%Y-%m-%d %H:%M:%S",tz="")), format='%H:%M:%S')
MV1$starttime <- as_date(MV1$starttime)
知道如何從圖表中的 x 軸上洗掉日期,甚至可能每隔一小時左右添加更多標簽嗎?
蒂亞!
uj5u.com熱心網友回復:
您可以嘗試使用格式化 x 軸的標簽,并通過設定為(“%H”= 小時,請參閱可用的格式代碼)scale_x_datetime()更改默認標簽。可以使用引數設定日期中斷,該引數需要一個具有持續時間的字串(例如“1 小時”、“2 小時”)。date_format"%H:00"?strptimedate_breaks
這是一個例子:
library(ggplot2)
# Generating some timestamps
set.seed(1)
df <- data.frame(
timestamp = sample(
seq(as.POSIXct("2022-04-26 00:00:00"),
as.POSIXct("2022-04-27 00:00:00"), by = "sec"),
size = 1000, replace = TRUE))
# Histogram with formatted date
ggplot(df, aes(timestamp))
geom_histogram(binwidth = 3600)
scale_x_datetime(date_breaks = "1 hour", date_labels = "%H:00",
expand = c(0, 0))
希望這可以幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/466718.html
上一篇:如何避免重疊注釋?
下一篇:每個變數ggplotR的比例線型
