R每天绘制多个观察结果

时间:2017-12-26 02:25:39

标签: r date plot timeserieschart

我一直在努力创建一个时间序列点图(不是箱图),它将容纳下面显示的每天有多个数据点的风格化数据。

数据稀疏填充,并且在日期范围内将会丢失多天的数据,但有些日子可能在数值范围较窄的情况下有数百个数据点。 x轴必须跨越整个日期范围,并且即使在没有任何数据的日子也包括漂亮的刻度标记。

如果x轴标签垂直放置而y轴标签水平放置,我会很高兴。

我一直在帮忙并用Google搜索,花了好几个小时与ggplot2,ts(),轴()设置等没有成功。 x轴特别成问题。

看起来这应该很容易,但我是一个R菜鸟。

False

1 个答案:

答案 0 :(得分:0)

使用包的解决方案。我不认为用每个日期标记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))

enter image description here

数据

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)