r - R:如何使用 ts_seasonal() 和 ts_heatmap() 函数在 x 轴上绘制带有星期几的图
问题描述
我正在学习如何使用“ts”对象并在 R 中进行可视化。为了练习,我想绘制一个季节性线图和热图,就像下面的图所示。
我的数据是 2020 年台北市建筑物的交易记录。对于每条交易记录,都记录了日期。这是清理后的数据:我是数据
对于季节性线图,x 轴应为星期几,y 轴应为横断面计数,每条线代表 2020 年的一个季度。
对于热图,x 轴也应该是星期几,y 轴应该是四分之一,颜色代表计数。
我尝试了几种方法,这是最接近示例的一种(代码如下所示)。尽管这些图看起来非常相似,但我认为 R 以错误的方式解释了数据。
# Setting Environment
library(ggplot2)
library(tidyverse)
library(readxl)
library(xts)
library(TSstudio)
# Load Data
taipei_trans = read.csv("taipei_trans_clean.csv")
# Data Processing
## Change data into wide table
taipei_trans_w = xtabs(~ Date, data = taipei_trans) %>% as.data.frame()
## Turn data into date form
taipei_trans_w$Date = taipei_trans_w$Date %>% as.character() %>%
as.numeric() %>% + 19110000 %>% as.character() %>%
as.Date(format = "%Y%m%d")
## Filter data by date
taipei_trans_w = subset(taipei_trans_w, Date >= "2020-01-01")
taipei_trans_w = subset(taipei_trans_w, Date <= "2020-12-31")
## Build a ts object
qutrs = taipei_trans_w$Date %>% quarters() %>%
factor(levels = c("Q1", "Q2", "Q3", "Q4"))
wdays = weekdays(taipei_trans_w$Date) %>%
factor(levels = c("星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"),
labels = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"))
trans_wq = data.frame(Count = taipei_trans_w$Freq, Weekday = wdays, Quarter = qutrs) %>%
group_by(Weekday, Quarter) %>%
summarise(Count = sum(Count)) %>%
arrange(Quarter)
trans_ts = ts(trans_wq[,3], start = 1, frequency = 7)
# Plotting
ts_seasonal(trans_ts)
ts_heatmap(trans_ts)
这些是我的结果:
如果有人能告诉我关键点是什么或有其他方法,我非常感谢!
解决方案
推荐阅读
- reactjs - 如何覆盖特定类别的反应材料组件
- python - 对于大小为 5 的轴 1,索引 5 超出范围
- vba - 如何使用 AutoIT 在 Word 中单击 ActiveX 控件?
- asp.net - 从已部署的 Azure 应用服务中提取 MachineKey
- python - 在 SciPy (Python) 中从拟合 PDF 生成随机样本
- javascript - LoopBack 和 MongoDb,embadsMany 关系返回空数组
- javascript - 将二进制 ArrayBuffer/TypedArray 数据转换为十六进制字符串
- java - 在 JavaFX 中对文本文件进行排序
- linux - 如何从文件的每一行中获取元素,并将它们添加到不同文件的每一行中的每个条目?
- javascript - 选择项的功能