从 R 中 24 小时直方图中的 x 轴删除日期(ggplot)
Remove date from x axis in 24h histogram in R (ggplot)
我已经从数据集中的时间戳中删除了日期,因此我可以按小时绘制登录。
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 轴删除日期,甚至可能每隔一小时左右添加更多标签吗?
TIA!
您可以尝试使用 scale_x_datetime()
格式化 x-axis 的标签,并通过将 date_format
设置为 "%H:00"
来更改默认标签(“%H” = 小时,有关可用的格式代码,请参阅 ?strptime
)。可以使用参数 date_breaks
设置日期分隔符,该参数需要一个具有持续时间的字符串(例如“1 小时”、“2 小时”)。
这是一个例子:
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))
希望这对您有所帮助。
我已经从数据集中的时间戳中删除了日期,因此我可以按小时绘制登录。
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")
我试过添加
+ 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 轴删除日期,甚至可能每隔一小时左右添加更多标签吗?
TIA!
您可以尝试使用 scale_x_datetime()
格式化 x-axis 的标签,并通过将 date_format
设置为 "%H:00"
来更改默认标签(“%H” = 小时,有关可用的格式代码,请参阅 ?strptime
)。可以使用参数 date_breaks
设置日期分隔符,该参数需要一个具有持续时间的字符串(例如“1 小时”、“2 小时”)。
这是一个例子:
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))
希望这对您有所帮助。