我有一个简单(但非常大)的数据集,该数据集是从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
我的数据,所以我不知道基本解决方案中的子集是否可以为您正常工作。通常,避免使用attach
; attach
是一种无需附加即可保存类型的好方法,它的“风险”小得多,因为它不会将数据列复制到隔离的向量中,从而使它们在子集或其他情况下更难以跟踪您的数据。