在R中绘制时间序列事件图

亚历克斯·里兹(Alex Lizz)

在设定的时间段(5年)内,我监视了许多对象(数千个具有不同ID的对象)。每个对象在每个日历日可能都处于少数状态之一:它可以不具有任何事件,可以处于10个不同事件状态之一,或者可以退役(即,没有更多的状态更改)。我正在努力使这些数据可视化。我设想了类似一组水平线的东西,每条水平线都对应一个单独的对象。没有事件的日子将用一个小的灰色(或白色)点标记,有事件的日子将用一个彩色的点表示,颜色与事件类型匹配,并且停用事件将用一个标记和黑点标记,在此之间的每一天退役日期和期限结束。

.....xxxx....xx.......DDDDDDD
.oo.x.qqqq.......xx....qqqqq.
......pppp.pp..######........

等等,其中的符号将被彩色的点(线)替换

如何在R中创建这样的图形?我也欢迎其他任何想法如何更好地可视化此类数据

因此,从2009年1月1日到2014年12月31日的数据看起来像这样

ObjID|EventStartDate|EventEndDate|EventType|    
00001|2010-01-10    |2010-01-13  | 01      | - event type 1, last for 4 days    
00001|2010-03-30    |2010-04-05  | 03      | - event type 3, last for 6 days    
00001|2012-06-30    |2012-06-30  | 0D      | - decommission    
00011|2009-07-15    |2009-08-10  | 08      |     
00011|2010-11-15    |2010-11-16  | 01      |     
00011|2012-06-30    |2012-07-11  | 05      |     
00011|2013-02-07    |2013-02-09  | 05      |     
01023|2011-11-11    |2011-11-21  | 07      | 

... 等等

arvi1000

您每天可以为每个事件绘制一个点,但是如果您花费大量时间,则将有一个非常大的图表。如果您想这样做,这是一种方法。我将样本数据放入名为的data.frame中dat,其日期为POSIXct格式。

# calculate how many days each event lasts
dat$n_days <- with(dat, 
               difftime(EventEndDate, EventStartDate, units='days'))+1

# new data frame with 1 row per event day
row_rep <- unlist(mapply(rep, 1:nrow(dat),  dat$n_days))
dat2 <- dat[row_rep,]

# add column for discrete event day
dat2$t_plus <- unlist(mapply(seq, 1,  dat$n_days)) - 1
dat2$EventDay <- with(dat2, as.Date(EventStartDate) + t_plus)

# plot
library(ggplot2)

ggplot(dat2, aes(y=factor(ObjID), x=EventDay, color=EventType)) +
  geom_point(shape=21) + 
  labs(title='Events by Date', y='Object ID') +
  theme_bw() + theme(legend.position='bottom')

生成此图表(您可以使用各种相关的ggplot参数微调如何以绘制的形状和颜色表示事件)

在此处输入图片说明

dat2 看起来像这样:

> dat2
     ObjID EventStartDate EventEndDate EventType  n_days t_plus   EventDay
1        1     2010-01-10   2010-01-13        01  4 days      0 2010-01-10
1.1      1     2010-01-10   2010-01-13        01  4 days      1 2010-01-11
1.2      1     2010-01-10   2010-01-13        01  4 days      2 2010-01-12
1.3      1     2010-01-10   2010-01-13        01  4 days      3 2010-01-13
2        1     2010-03-30   2010-04-05        03  7 days      0 2010-03-30
2.1      1     2010-03-30   2010-04-05        03  7 days      1 2010-03-31
2.2      1     2010-03-30   2010-04-05        03  7 days      2 2010-04-01
2.3      1     2010-03-30   2010-04-05        03  7 days      3 2010-04-02
2.4      1     2010-03-30   2010-04-05        03  7 days      4 2010-04-03
2.5      1     2010-03-30   2010-04-05        03  7 days      5 2010-04-04
2.6      1     2010-03-30   2010-04-05        03  7 days      6 2010-04-05
3        1     2012-06-30   2012-06-30        0D  1 days      0 2012-06-30
4       11     2009-07-15   2009-08-10        08 27 days      0 2009-07-15
4.1     11     2009-07-15   2009-08-10        08 27 days      1 2009-07-16
4.2     11     2009-07-15   2009-08-10        08 27 days      2 2009-07-17
4.3     11     2009-07-15   2009-08-10        08 27 days      3 2009-07-18
4.4     11     2009-07-15   2009-08-10        08 27 days      4 2009-07-19
4.5     11     2009-07-15   2009-08-10        08 27 days      5 2009-07-20
4.6     11     2009-07-15   2009-08-10        08 27 days      6 2009-07-21
4.7     11     2009-07-15   2009-08-10        08 27 days      7 2009-07-22
4.8     11     2009-07-15   2009-08-10        08 27 days      8 2009-07-23
4.9     11     2009-07-15   2009-08-10        08 27 days      9 2009-07-24
4.10    11     2009-07-15   2009-08-10        08 27 days     10 2009-07-25
4.11    11     2009-07-15   2009-08-10        08 27 days     11 2009-07-26
4.12    11     2009-07-15   2009-08-10        08 27 days     12 2009-07-27
4.13    11     2009-07-15   2009-08-10        08 27 days     13 2009-07-28
4.14    11     2009-07-15   2009-08-10        08 27 days     14 2009-07-29
4.15    11     2009-07-15   2009-08-10        08 27 days     15 2009-07-30
4.16    11     2009-07-15   2009-08-10        08 27 days     16 2009-07-31
4.17    11     2009-07-15   2009-08-10        08 27 days     17 2009-08-01
4.18    11     2009-07-15   2009-08-10        08 27 days     18 2009-08-02
4.19    11     2009-07-15   2009-08-10        08 27 days     19 2009-08-03
4.20    11     2009-07-15   2009-08-10        08 27 days     20 2009-08-04
4.21    11     2009-07-15   2009-08-10        08 27 days     21 2009-08-05
4.22    11     2009-07-15   2009-08-10        08 27 days     22 2009-08-06
4.23    11     2009-07-15   2009-08-10        08 27 days     23 2009-08-07
4.24    11     2009-07-15   2009-08-10        08 27 days     24 2009-08-08
4.25    11     2009-07-15   2009-08-10        08 27 days     25 2009-08-09
4.26    11     2009-07-15   2009-08-10        08 27 days     26 2009-08-10
5       11     2010-11-15   2010-11-16        01  2 days      0 2010-11-15
5.1     11     2010-11-15   2010-11-16        01  2 days      1 2010-11-16
6       11     2012-06-30   2012-07-11        05 12 days      0 2012-06-30
6.1     11     2012-06-30   2012-07-11        05 12 days      1 2012-07-01
6.2     11     2012-06-30   2012-07-11        05 12 days      2 2012-07-02
6.3     11     2012-06-30   2012-07-11        05 12 days      3 2012-07-03
6.4     11     2012-06-30   2012-07-11        05 12 days      4 2012-07-04
6.5     11     2012-06-30   2012-07-11        05 12 days      5 2012-07-05
6.6     11     2012-06-30   2012-07-11        05 12 days      6 2012-07-06
6.7     11     2012-06-30   2012-07-11        05 12 days      7 2012-07-07
6.8     11     2012-06-30   2012-07-11        05 12 days      8 2012-07-08
6.9     11     2012-06-30   2012-07-11        05 12 days      9 2012-07-09
6.10    11     2012-06-30   2012-07-11        05 12 days     10 2012-07-10
6.11    11     2012-06-30   2012-07-11        05 12 days     11 2012-07-11
7       11     2013-02-07   2013-02-09        05  3 days      0 2013-02-07
7.1     11     2013-02-07   2013-02-09        05  3 days      1 2013-02-08
7.2     11     2013-02-07   2013-02-09        05  3 days      2 2013-02-09
8     1023     2011-11-11   2011-11-21        07 11 days      0 2011-11-11
8.1   1023     2011-11-11   2011-11-21        07 11 days      1 2011-11-12
8.2   1023     2011-11-11   2011-11-21        07 11 days      2 2011-11-13
8.3   1023     2011-11-11   2011-11-21        07 11 days      3 2011-11-14
8.4   1023     2011-11-11   2011-11-21        07 11 days      4 2011-11-15
8.5   1023     2011-11-11   2011-11-21        07 11 days      5 2011-11-16
8.6   1023     2011-11-11   2011-11-21        07 11 days      6 2011-11-17
8.7   1023     2011-11-11   2011-11-21        07 11 days      7 2011-11-18
8.8   1023     2011-11-11   2011-11-21        07 11 days      8 2011-11-19
8.9   1023     2011-11-11   2011-11-21        07 11 days      9 2011-11-20
8.10  1023     2011-11-11   2011-11-21        07 11 days     10 2011-11-21

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在R中绘制时间序列事件图

来自分类Dev

在R中绘制时间序列

来自分类Dev

如何在R中为时间序列光谱数据绘制漂亮的3D图

来自分类Dev

如何使用时间序列图在r中绘制垂直虚线

来自分类Dev

将R中的时间序列绘制为堆积条形图

来自分类Dev

如何在R中以日期格式绘制数据的时间序列图

来自分类Dev

在R中绘制多个时间序列

来自分类Dev

在R中绘制时间序列时出错

来自分类Dev

R中的堆栈时间序列图

来自分类Dev

R 中的多个带时间序列的图

来自分类Dev

在R中作图:如何在时间序列数据中绘制堆叠的条形图以显示百分比构成?

来自分类Dev

用R中的时间索引绘制时间序列

来自分类Dev

将时间序列绘制为热图

来自分类Dev

绘制随时间变化的熊猫时间序列列中唯一事件的累计数量

来自分类Dev

R中绘制多元时间序列的问题

来自分类Dev

在R中绘制时间序列(24小时)

来自分类Dev

如何不使用R绘制时间序列中的差距

来自分类Dev

用ggplot绘制R中的几个大时间序列的问题

来自分类Dev

用R中的不连续轴绘制时间序列

来自分类Dev

在R中绘制具有不同颜色的时间序列

来自分类Dev

R中时间序列的谐波回归模型的拟合和绘制

来自分类Dev

R中绘制多元时间序列的问题

来自分类Dev

为什么在R中向后绘制时间序列数据?

来自分类Dev

R Markdown中未显示多个大时间序列的图

来自分类Dev

R 中的时间序列图:从图中删除间隙 [zoo]

来自分类Dev

Gnuplot为时间序列图绘制了错误的时间

来自分类Dev

时间序列分析:如何在 python 中绘制这些 AR(1) 图?

来自分类Dev

如何使用Python绘制时间序列热图?

来自分类Dev

是否可以在高图中以热图的形式绘制时间序列?

Related 相关文章

热门标签

归档