我在4月到8月期间在不同地点制作了一个简单(但非常大)的计数数据集。 在4月中旬到7月之间没有零计数 - 但零线从最早到最晚都延伸。
以下是用于制作上述图表的数据部分(列为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", " 4/17/2014"," 4/28/2014"," 4/8/2014"," 5/13/2014&#34 ;," 6/17/2014", " 6/6/2014"," 7/10 / 2014"," 7/22/2014"," 7/29/2014&#34 ;," 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"," Visible.Number" ),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不沿零线绘制一条线? 谢谢你的帮助!
答案 0 :(得分:3)
您的问题在于多个站点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)
)
}
NB 我做了不 attach
我的数据,所以我不知道基本解决方案中的子集是否能够正常运行如果你做attach
。一般来说,避免attach
; with
是一种很好的方法,可以在不附加的情况下保存输入,并且不会“冒险”,因为它不会将您的数据列复制到孤立的向量中,从而使它们更难以跟踪您的子集或其他方式处理您的数据。