【问题标题】:Having trouble with Lattice and plotting events as time series line graphs在使用 Lattice 并将事件绘制为时间序列折线图时遇到问题
【发布时间】:2012-02-19 23:14:23
【问题描述】:

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

> 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
...

我在 lattice 中使用 xyplot 进行绘图,如果我只是绘制它们发生的点,它就可以正常工作。我通过 Unit 绘制每个事件的图像网格,其中 x 轴为 Date,y 轴为 Dount。

> xyplot(Count~Date | Unit, data)

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

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

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

我对使用 R 绘图还是很陌生,因此我们将不胜感激任何帮助。谢谢。

【问题讨论】:

    标签: r lattice


    【解决方案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)
    

    【讨论】:

    • 谢谢!我以为我已经按日期对数据框进行了排序(也许我错过了这个),但我没有作为 xyplot 命令的一部分进行排序。 ggplot2 在我要学习的软件包列表中名列前茅,也感谢它的相应代码。
    猜你喜欢
    • 2021-04-14
    • 2023-03-22
    • 2019-12-21
    • 1970-01-01
    • 2013-09-06
    • 2018-05-15
    • 2020-09-12
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多