使用莱迪思时遇到问题并将事件绘制为时间序列线图

时间:2012-02-19 23:14:24

标签: r lattice

我有数据表,我试图在R中使用晶格来绘制图形。该表包含按日期每个单位发生的特定事件的计数(我按相应月份的第一天分组),按日期排序。

> data
      Unit       Date Count
1   Unit14 2005-01-01     1
2   Unit19 2005-01-01     0
3   Unit13 2006-01-01     8
4   Unit17 2006-01-01     0
5   Unit13 2007-01-01     0
6   Unit14 2007-01-01     4
7   Unit19 2007-01-01     1
8    Unit5 2007-01-01     0
9    Unit9 2007-01-01     1
10  Unit13 2008-01-01     0
...

我在格子中使用xyplot绘图,如果我只绘制它们发生的点,它就可以正常工作。我通过单位绘制每个事件的图像网格,其中x轴为日期,y轴为Dount。

> xyplot(Count~Date | Unit, data)

但是,当我尝试将其绘制为折线图时,它并不理解事件的顺序是在事件发生的时间,并且该线也会自动加倍。换句话说,线条从图形的中间开始,并在点之间形成“星形”图案。

> xyplot(Count~Date | Unit, data, col="blue",type="l")

如何将其绘制为时间序列?

我仍然很擅长用R绘图,所以任何帮助都会非常感激。谢谢。

1 个答案:

答案 0 :(得分:1)

按照它们出现的顺序绘制和连接点, 不按时间顺序排列。 如果您对data.frame进行排序,那些人工制品将会消失 在绘图之前。

# Sample data
n <- 20
k <- 3
d <- data.frame(
  Unit = rep(LETTERS[1:k], each=n),
  Date = rep(sample(seq.Date(Sys.Date(), length=n, by=1)), k),
  Count = rpois(k*n,10)
)
# Unorderd data    
xyplot(Count ~ Date | Unit, data=d, type="l")
# Ordered data
xyplot(Count ~ Date | Unit, data=d[order(d$Date),], type="l")

请注意,ggplot2不会发生这种情况(除非您明确要求提供“星形”人工制品):

library(ggplot2)
ggplot(d, aes(Date, Count)) + geom_line() + facet_grid(~Unit)