5

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メーリングアーカイブを読みました。geom_pathしかし、それは私にとってはうまくいきません。

PSなぜggplot2は名前のドットが好きではないので、別のドットを使用しなければならなかったのですか?

4

1 に答える 1

2

問題はグループ化にあります。を使用して、yearこれらのジャンプをスキップできます。ただ行う:

dat$grp <- format(dat$Timestamp, "%Y")
ggplot(dat, aes(x=Timestamp, y=Discharge..cfs.)) +
    geom_path(aes(colour = quality, group = grp)) + 
    theme(legend.position='bottom')

あなたは得る:

ここに画像の説明を入力

編集:コメントに詳細に答えるには:グループ化する変数がわからない限り、適切にグループ化できません。1 年のうちにいくつかの月が欠落している場合、もちろん、このコードはジャンプを生成します。その場合、次のようにすることをお勧めします。

dat$grp <- paste(format(dat$Timestamp, "%Y"), format(dat$Timestamp, "%m"))
ggplot(dat, aes(x=Timestamp, y=Discharge..cfs.)) +
    geom_path(aes(colour = quality, group = grp)) + 
    theme(legend.position='bottom')

あなたはこれを得る:

ここに画像の説明を入力

于 2013-03-06T22:04:01.640 に答える