我有一个简单(但非常大)的数据集,该数据集是从4月到8月在不同站点进行的。
在4月中旬至7月之间,没有零计数-从最早的日期到最近的日期一直为零。



这是用于制作上述图表的数据部分(列为-Site.ID,DATE和可见数字):


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),. Label = c(“ 3/21/2014”,“ 3/27/2014”,
“ 4/17/2014”,“ 4/28/2014”,“ 4/8/2014”,“ 5/13/2014”,“ 6/17/2014”,
“ 6/6/2014”,“ 7/10/2014”,“ 7/22/2014”,“ 7/29/2014”,“ 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))、. Names = c(“ Site.ID”,“ DATE”,“ Visible.Number”
),类=“ 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不沿零绘制线?
谢谢您的帮助!

最佳答案

您的问题出在多个站点ID上。它绘制第一个,然后返回(画一条线)以绘制第二个。本质上,基本图试图绘制所有线条而不用“抬起笔”。使用基本绘图时,您的选择是使用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我的数据,所以我不知道基本解决方案中的子集是否可以为您正常工作。通常,避免使用attachattach是一种无需附加即可保存类型的好方法,它的“风险”小得多,因为它不会将数据列复制到隔离的向量中,从而使它们在子集或其他情况下更难以跟踪您的数据。

10-04 15:55