我一直在努力创建一个时间序列点图(不是箱图),它将容纳下面显示的每天有多个数据点的风格化数据。
数据稀疏填充,并且在日期范围内将会丢失多天的数据,但有些日子可能在数值范围较窄的情况下有数百个数据点。 x轴必须跨越整个日期范围,并且即使在没有任何数据的日子也包括漂亮的刻度标记。
如果x轴标签垂直放置而y轴标签水平放置,我会很高兴。
我一直在帮忙并用Google搜索,花了好几个小时与ggplot2,ts(),轴()设置等没有成功。 x轴特别成问题。
看起来这应该很容易,但我是一个R菜鸟。
False
答案 0 :(得分:0)
使用tidyverse包的解决方案。我不认为用每个日期标记x轴是一个好主意,因为它太拥挤了。您可以看到该示例使用日期中断为“2周”,并且它已经有点拥挤。 date_labels = "%Y-%m-%d"
是指定日期格式。 axis.text.x = element_text(angle = 90, hjust = 1)
是垂直放置x标签。
library(tidyverse)
# Expand the data frame to full sequence of dates
dat2 <- dat %>%
mutate(dt = as.Date(dt)) %>%
complete(dt = full_seq(dt, period = 1))
ggplot(dat2, aes(x = dt, y = RotMarks)) +
geom_point() +
scale_x_date(name = "Date",
date_labels = "%Y-%m-%d",
date_breaks = "2 weeks") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
数据强>
dat <- read.csv(text = "dt, RotMarks
2017-01-01, 1
2017-01-01, 3
2017-03-10, 2
2017-03-10, 4
2017-03-10, 6
2017-06-15, 10
2017-06-15, 15
2017-09-20, 1
2017-10-31, 12
2017-10-31, 12
2017-10-31, 12
2017-10-31, 12
2017-10-31, 12
2017-10-31, 12
2017-10-31, 12
2017-10-31, 4
2017-10-31, 4
2017-10-31, 4
2017-10-31, 4
2017-10-31, 1
2017-10-31, 1
2017-10-31, 1
2017-10-31, 1
2017-12-31, 1
2017-12-31, 1
2017-12-31, 1",
header = TRUE, stringsAsFactors = FALSE)