我有一个数据表,我正试图使用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来绘制,如果我只是绘制它们发生的点,它会很好地工作。我通过Unit绘制每个事件的图像网格,x轴为Date,y轴为Dount。
> xyplot(Count~Date | Unit, data)
但是,当我试图把它画成一个折线图时,它不明白事件的顺序是按事件的时间排列的,而且这条线会自行加倍。换句话说,线从图的中间开始,在点之间形成"星形"图案。
> xyplot(Count~Date | Unit, data, col="blue",type="l")
如何将其绘制为时间序列?
我对R绘图还很陌生,所以任何帮助都将不胜感激。非常感谢。
点按出现的顺序绘制和连接,不是按时间顺序。如果你对数据进行排序,这些人工制品就会消失。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)