我有数据表,我试图在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绘图,所以任何帮助都会非常感激。谢谢。
答案 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)