R:绘制小时数据
R: Plotting hour data
我只是另一个 R 菜鸟,正在为 R 中的日期时间对象苦苦挣扎。当我的代码给我这样的图片时,你能告诉我我的代码有什么问题吗?我希望 x 轴只有小时,没有日期。并确保数据框的小时列不应该像这样 → 2021-07-09 07:30:00。应该是07:30、16:30、18:10等等。观察日期在另一列中。下面是我使用的代码,它在另一个数据框上工作得很好,所以我很困惑。
df$hour <- as.POSIXct(df$hour, format="%H:%M")
和 ggplot(data=df, aes(x=df$hour)) + geom_freqpoly()
正如 stefan 所说,很难确切知道什么可以处理您的数据。但我想你可能想看看 scale_x_datetime
。例如:
library(dplyr)
library(ggplot2)
dat <- tibble(
hour = as.POSIXct(c(
"2020-01-01 12:00",
"2020-01-01 13:00",
"2020-01-01 14:00"
)),
y = 1:3
)
dat %>%
ggplot(aes(x = hour, y = y)) +
geom_line(group = 1) +
scale_x_datetime(
date_breaks = "1 hour",
date_labels = "%H:%M"
)
关于更多上下文,当您编写 df$hour <- as.POSIXct(df$hour, format="%H:%M")
时,您实际上并没有格式化该变量,它仍然是一个日期时间对象。 (打印 df$hour
以了解我的意思。)使用 format
函数(带有令人困惑的 format
参数)这样的事情可能会更好:
format(as.POSIXct(df$hour), format = "%H:%M")
但无论如何,我倾向于保留该变量中的所有信息,并且只使用 scale_x_datetime
.
在 ggplot 本身中进行格式化
有更多上下文。
我只是另一个 R 菜鸟,正在为 R 中的日期时间对象苦苦挣扎。当我的代码给我这样的图片时,你能告诉我我的代码有什么问题吗?我希望 x 轴只有小时,没有日期。并确保数据框的小时列不应该像这样 → 2021-07-09 07:30:00。应该是07:30、16:30、18:10等等。观察日期在另一列中。下面是我使用的代码,它在另一个数据框上工作得很好,所以我很困惑。
df$hour <- as.POSIXct(df$hour, format="%H:%M")
和 ggplot(data=df, aes(x=df$hour)) + geom_freqpoly()
正如 stefan 所说,很难确切知道什么可以处理您的数据。但我想你可能想看看 scale_x_datetime
。例如:
library(dplyr)
library(ggplot2)
dat <- tibble(
hour = as.POSIXct(c(
"2020-01-01 12:00",
"2020-01-01 13:00",
"2020-01-01 14:00"
)),
y = 1:3
)
dat %>%
ggplot(aes(x = hour, y = y)) +
geom_line(group = 1) +
scale_x_datetime(
date_breaks = "1 hour",
date_labels = "%H:%M"
)
关于更多上下文,当您编写 df$hour <- as.POSIXct(df$hour, format="%H:%M")
时,您实际上并没有格式化该变量,它仍然是一个日期时间对象。 (打印 df$hour
以了解我的意思。)使用 format
函数(带有令人困惑的 format
参数)这样的事情可能会更好:
format(as.POSIXct(df$hour), format = "%H:%M")
但无论如何,我倾向于保留该变量中的所有信息,并且只使用 scale_x_datetime
.