如何制作在一段时间内每天组合多个条目的折线图?
Posted
技术标签:
【中文标题】如何制作在一段时间内每天组合多个条目的折线图?【英文标题】:How do I make a line graph that combines multiple entries per day over a period of time? 【发布时间】:2022-01-24 03:43:01 【问题描述】:不确定我的标题是否有意义,但我正在尝试绘制一段时间内的支出。这是我的输入:
structure(list(case = c(1L, 1L, 1L, 1L, 1L, 2L), year = c(2021L,
2021L, 2021L, 2021L, 2021L, 2021L), month = c(11L, 11L, 11L,
11L, 11L, 11L), day = c(11L, 11L, 11L, 11L, 11L, 12L), type1 = c("food",
"food", "drink", "misc", "drink", "drink"), type2 = c("restaurant",
"tang_kee", "coffee", "headphone", "cola", "coffee_grounds"),
amount = c(210, 12, 9, 50, 18, 39)), row.names = c(NA, 6L
), class = "data.frame")
当我只是用 gglines 制作一个简单的折线图时,它是这样的:
ggline(slack_budget,
x="case",
y="amount")+
theme_bw()+
labs(title = "Progression of Spending November and December",
subtitle = "Non-Rent / Non-Utility Spending Line Graph",
caption = "*Data obtained from local matrix.")+
theme(plot.title = element_text(face = "bold"),
plot.caption = element_text(face = "italic"))
创建这个:
正如您在此处看到的那样,它为当天的每个支出条目绘制了一个点。在我看来,这看起来有点难看,因为它并不能真正说明每天实际花费了多少。
我更想要的是结合每一天的所有条目而不结合每个月的支出(因此我有 x = case 而不是 x = day)。如果有更简单的方法来实现这一点,那就太好了。
解决方案:
感谢 Stefan 的回答。我现在在汇总数据后创建了这个可爱的图:
【问题讨论】:
【参考方案1】:一种选择是汇总您每天/案例的数据,以折线图显示每天的总支出:
library(ggpubr)
slack_budget_sum <- aggregate(amount ~ case + year + month + day, data = slack_budget, FUN = sum)
base <- ggline(slack_budget_sum,
x="case",
y="amount")+
theme_bw()+
labs(title = "Progression of Spending November and December",
subtitle = "Non-Rent / Non-Utility Spending Line Graph",
caption = "*Data obtained from local matrix.")+
theme(plot.title = element_text(face = "bold"),
plot.caption = element_text(face = "italic"))
base
如果您仍想显示单次购买,您可以使用原始非汇总数据通过额外的geom_point
来实现:
base +
geom_point(data = slack_budget, color = "steelblue")
【讨论】:
我认为这可以显示长期趋势,但我对每日或每月模式更感兴趣,所以最好看看每天的总和绘制成折线图。 等等,没关系,这实际上正是我所需要的。只是在你的图表上看起来不同。谢谢!以上是关于如何制作在一段时间内每天组合多个条目的折线图?的主要内容,如果未能解决你的问题,请参考以下文章