【问题标题】:R plot multiple observations per dayR每天绘制多个观察值
【发布时间】:2017-12-26 02:25:39
【问题描述】:

我一直在努力创建一个时间序列点图(不是箱线图),以适应下面显示的程式化数据,这些数据每天有多个数据点。

数据分布稀少,并且在该日期范围内的很多天都将缺少数据,但有些日子可能在一个狭窄的值范围内有数百个数据点。 x 轴必须跨越整个日期范围,并包含漂亮的刻度线,即使对于没有任何数据的日子也是如此。

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

我一直在寻求帮助并在谷歌上搜索并花了数小时使用 ggplot2、ts()、axis() 设置等,但没有成功。 x 轴尤其成问题。

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

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  

【问题讨论】:

  • 让你的观众倾斜他们的头来阅读 90° 旋转 X 轴标签几乎从来都不是“好”。
  • 您可以在 R 中从事小型合同工作吗?

标签: r date plot timeserieschart


【解决方案1】:

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

【讨论】:

  • 我喜欢这个,但是当我运行它时,R 会产生这个错误:找不到函数“%>%”
  • 你加载了tidyverse包吗?
  • 现在 tidyverse 已加载。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 2021-06-25
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多