按日期时间绘制折线图,按日期绘制 histogram/bar 图
Plotting a line graph by datetime with a histogram/bar graph by date
我是 R 的新手,在一些非常基础的 ggplot2
工作上真的需要一些帮助。
我正在尝试在图表上可视化提交总数,在折线图中显示总体总数,在其顶部的直方图(或条形图)中显示每日总数。我不确定如何向直方图添加中断或分箱,以便它采用提交日期时间列并使每个条形成为每日总计。
我尝试添加一个将日期时间转换为日期的列并根据它绘制图表,但我真的希望折线图包含时间。
这是我目前的情况:
df <- df %>%
mutate(datetime = lubridate::mdy_hm(datetime))%>%
mutate(date = lubridate::as_date(datetime))
#sort by datetime
df <- df %>%
arrange(datetime)
#add total number of submissions
df <- df %>%
mutate(total = row_number())
#ggplot
line_plus_histo <- df%>%
ggplot() +
geom_histogram(data = df, aes(x=datetime)) +
geom_line(data = df, aes(x=datetime, y=total), col = "red") +
stat_bin(data = df, aes(x=date), geom = "bar") +
labs(
title="Submissions by Day",
x="Date",
y="Submissions",
legend=NULL)
line_plus_histo
如您所见,我还通过按时间排序然后添加包含行号的列来计算提交总数。所以,如果你能帮助我使用更好的方法,我将不胜感激。
请在该行下方找到时间与提交的直方图:
您可以通过以下方式扩展您的数据操作:
df <- df |>
mutate(datetime = lubridate::mdy_hm(datetime)) |>
arrange(datetime) |>
mutate(midday = as_datetime(floor_date(as_date(datetime), unit = "day") + 0.5)) |>
mutate(totals = row_number()) |>
group_by(midday) |>
mutate(N = n())|>
ungroup()
然后对柱使用 midday
,对线使用 datetime
:
df%>%
ggplot() +
geom_bar(data = df, aes(x = midday)) +
geom_line(data = df, aes(x=datetime, y=totals), col = "red") +
labs(
title="Submissions by Day",
x="Date",
y="Submissions",
legend=NULL)
PS。抱歉,X 轴上的波兰语语言环境。
PS2。使用 geom_bar
看起来好多了
由 reprex package (v2.0.1)
创建于 2022-02-03
我是 R 的新手,在一些非常基础的 ggplot2
工作上真的需要一些帮助。
我正在尝试在图表上可视化提交总数,在折线图中显示总体总数,在其顶部的直方图(或条形图)中显示每日总数。我不确定如何向直方图添加中断或分箱,以便它采用提交日期时间列并使每个条形成为每日总计。
我尝试添加一个将日期时间转换为日期的列并根据它绘制图表,但我真的希望折线图包含时间。
这是我目前的情况:
df <- df %>%
mutate(datetime = lubridate::mdy_hm(datetime))%>%
mutate(date = lubridate::as_date(datetime))
#sort by datetime
df <- df %>%
arrange(datetime)
#add total number of submissions
df <- df %>%
mutate(total = row_number())
#ggplot
line_plus_histo <- df%>%
ggplot() +
geom_histogram(data = df, aes(x=datetime)) +
geom_line(data = df, aes(x=datetime, y=total), col = "red") +
stat_bin(data = df, aes(x=date), geom = "bar") +
labs(
title="Submissions by Day",
x="Date",
y="Submissions",
legend=NULL)
line_plus_histo
如您所见,我还通过按时间排序然后添加包含行号的列来计算提交总数。所以,如果你能帮助我使用更好的方法,我将不胜感激。
请在该行下方找到时间与提交的直方图:
您可以通过以下方式扩展您的数据操作:
df <- df |>
mutate(datetime = lubridate::mdy_hm(datetime)) |>
arrange(datetime) |>
mutate(midday = as_datetime(floor_date(as_date(datetime), unit = "day") + 0.5)) |>
mutate(totals = row_number()) |>
group_by(midday) |>
mutate(N = n())|>
ungroup()
然后对柱使用 midday
,对线使用 datetime
:
df%>%
ggplot() +
geom_bar(data = df, aes(x = midday)) +
geom_line(data = df, aes(x=datetime, y=totals), col = "red") +
labs(
title="Submissions by Day",
x="Date",
y="Submissions",
legend=NULL)
PS。抱歉,X 轴上的波兰语语言环境。
PS2。使用 geom_bar
看起来好多了
由 reprex package (v2.0.1)
创建于 2022-02-03