首页 文章

R折线图 - 去除与数据无关的烦恼零线

提问于
浏览
4

我有一个简单(但非常大)的计数数据集,在4月到8月的不同地点进行 . 在4月中旬和7月之间没有零计数 - 但零线从最早到最晚 .

enter image description here

以下是用于制作上述图表的数据部分(列为Site.ID,DATE,Visible Number):

data = structure(list(Site.ID = c)(302L,302L,302L,302L,302L,302L,302L,302L,302L,302L,302L,302L,304L,304L,304L,304L,304L,304L,304L ,304L,304L,304L,304L,304L),DATE =结构(c(1L,2L,5L,3L,4L,6L,8L,7L,9L,10L,11L,12L,1L,2L,5L,3L, 4L,6L,8L,7L,9L,10L,11L,12L),.标签= c(“3/21/2014”,“3/27/2014”,“2014/4/17”,“4/28 / 2014“,”2014年4月8日“,”2014/5/13“,”2014年6月17日“,”2014年6月6日“,”2014年7月10日“,”2014年7月22日“,”2014年7月29日“,”8/5/2014“),class =”factor“),Visible.Number = c(0L,0L,5L,14L,20L,21L,6L,8L,0L, 0L,0L,0L,0L,0L,2L,7L,7L,7L,7L,5L,0L,0L,0L,0L)) . . Name = c(“Site.ID”,“DATE”,“可见 . 数字“),class =”data.frame“,row.names = c(NA,-24L))

attach(data)
DATE<-as.Date(DATE,"%m/%d/%Y")
plot(data$Visible.Number~DATE, type="l", ylab="Visible Number")

我有两个网站但有三条线 . 如何让R不沿零线绘制一条线?谢谢您的帮助!

1 回答

  • 3

    您的问题在于多个站点ID . 它绘制第一个,然后返回(画一条线)绘制第二个 . 基本上,基础图试图在没有"lifting the pen"的情况下绘制所有线 . 使用基础绘图,您可以选择使用 lines 单独绘制它们,可能在 for 循环中 . 我认为这样的事情更容易 ggplot2

    library(ggplot2)
    ggplot(data, aes(x = DATE, y = Visible.Number, group = Site.ID)) + geom_line()
    
    # if you prefer more base-like styling
    ggplot(data, aes(x = DATE, y = Visible.Number, group = Site.ID)) +
      geom_line() +
      theme_bw()
    

    在基地:

    plot(data$DATE, data$Visible.Number, type = "n",
         ylab = "Visible Number", xlab = "Date")
    
    for(site in unique(data$Site.ID)) {
        with(subset(data, Site.ID == site),
             lines(Visible.Number ~ DATE)
        )
    }
    

    N.B. 我没有像你那样 attach 我的数据,所以如果你做 attach ,我不知道基础解决方案中的子集是否适合你 . 一般来说,避免 attach ; with 是一种保存打字而不附加的好方法,因为它不会将您的数据列复制到孤立的向量中,因此在分组或以其他方式处理数据时更难以跟踪它们 .

相关问题