【发布时间】:2013-03-06 21:42:46
【问题描述】:
我有一个带有时间序列的data.frame。里面还有NAs,还有一个因素我想用它来突出一行的不同部分。
flow.mndnr <- function(id, start, end) {
uri <- sprintf("http://maps1.dnr.state.mn.us/cgi-bin/csg.pl?mode=dump_hydro_data_as_csv&site=%s&startdate=%s&enddate=%s", id, start, end)
dat <- read.csv(url(uri), colClasses=c(Timestamp="Date"))
rng <- range(dat$Timestamp)
d <- data.frame(Timestamp=seq(rng[1], rng[2], by='day'))
merge(d, dat, all.x=TRUE)
}
dat <- flow.mndnr("28062001", as.Date("2002-04-02"), as.Date("2011-10-05"))
我可以无条件地绘制它
library(lattice)
xyplot(Discharge..cfs. ~ Timestamp, dat, type='l', cex=0.5, auto.key=TRUE)
但我尝试引入因子时无法摆脱连接线
xyplot(Discharge..cfs. ~ Timestamp, dat, type='l',
groups=dat$Discharge..cfs..Quality, cex=0.5, auto.key=TRUE)
与 ggplot2 相同
dat$quality <- dat$Discharge..cfs..Quality
ggplot(dat, aes(x=Timestamp, y=Discharge..cfs.)) +
geom_path(aes(colour=quality)) + theme(legend.position='bottom')
我尝试了geom_line,但没有成功。我在ggplot2 mailing archive 中读到geom_path 是要走的路。但这对我来说不太管用。
附:为什么 ggplot2 不喜欢名称中的点,所以我不得不使用另一个?
【问题讨论】:
-
+1!因为你已经尝试过 ggplot2 和 lattice!可重复的示例和明确的问题。
-
Re:dots,为了正常工作,ggplot 必须对其参数进行一些花哨的评估,因此那里可能会出现问题。通常,无论如何清理列名都被认为是一种好习惯。例如,一个简单的
gsub删除点。