0

私は観測に大きなギャップがあることを意味する不完全な時系列を持っています:

dat <- data.frame(
  date = c(2000, 2001, 2002, 2009, 2010, 2011),
  value1 = runif(6,1,100),
  value2 = runif(6,1,100)
)
library("reshape2")
dat_long <- melt(dat, id="date")
dat_long$time <- ifelse(dat_long$date < 2009, "early", "late")

datを使用してプロットしたいと思いますggplot2が、観測値 2002 と 2009 の間にはギャップがあります。事実上、2 つの線のグループが存在する必要があります。によるtime)。

Line break when no data in ggplot2 に従って、試しました

library("ggplot2")
ggplot(data=dat_long, aes(x=date, y=value, group=variable)) +
  geom_line(aes(color=variable, group=time)) +
  geom_point(aes(color=variable))

しかし、これは単にすべてのポイントを組み合わせたものです:

すべてのポイントが合体

私の質問とggplot2 にデータがない場合の改行group=timeの違いは、複数の行があることです。これにより、geom_line(aes(...))呼び出しでの使用が明らかに禁止されます。

次に、次善の策としてファセットを試しました。

ggplot(data=dat, aes(x=date, y=value, group=variable)) +
  geom_line() + geom_point() + facet_grid( ~ time)

しかし、これは観測がないにもかかわらず、x 軸に沿ってスケール全体を描画します。 ファセット

4

1 に答える 1

1

変数+時間に等しいグループ化に新しい変数を使用できます(つまり、4つのグループ:value1-early、value1-late、value2-early、value2-late)

dat_long$gr <- with(dat_long,paste0(variable,time))

ggplot(data=dat_long, aes(x=date, y=value, group=gr,color=variable)) +
  geom_line() +
  geom_point()

ここに画像の説明を入力

于 2015-08-22T06:32:51.863 に答える