0

各プロットにいくつかの geom_text と geom_points を持つ 2 つの geom_line 時系列があります。

2 つのプロットの 1 つにはさらに geom_vline があります。2つをマージすることは可能かと思いますが、解決策が得られませんでした。

2 つのプロットを次に示します。

require(zoo)
require(ggplot2)

set.seed(10)

# plot 1:
tmp1 <- xts(cumsum(rnorm(5000,1,10)), Sys.Date()-5000:1)
data.tmp1 = data.frame(date=as.Date(index(tmp1)),
                      value=drop(coredata(tmp1)))
data.tmp1.year.end = data.frame(date=as.Date(index(tmp1[endpoints(tmp1, "years", 1)])),
                               value= drop(coredata(tmp1[endpoints(tmp1, "years", 1)])))

plot1 = 
  ggplot(data.tmp1, aes(x=date, y=value)) +
  geom_line(aes(y=value), size=1) +
  geom_point(data=data.tmp1.year.end, col="red") +
  geom_text(data=data.tmp1.year.end, label=data.tmp1.year.end$value, vjust=0, hjust=1) 

# plot 2:
tmp2 <- xts(cumsum(rnorm(5000,1,100)), Sys.Date()-5000:1)
data.tmp2 = data.frame(date=as.Date(index(tmp2)),
                       value=drop(coredata(tmp2)))
data.tmp2.year.end = data.frame(date=as.Date(index(tmp2[endpoints(tmp2, "years", 1)])),
                                value= drop(coredata(tmp2[endpoints(tmp2, "years", 1)])))
tmp2.date =as.Date(c("2008-01-01"))

plot2 = 
  ggplot(data.tmp2, aes(x=date, y=value)) +
  geom_line(aes(y=value), size=1) +
  geom_point(data=data.tmp2.year.end, col="red") +
  geom_vline(xintercept=as.numeric(tmp2.date), linetype="dotted") +
  geom_text(data=data.tmp2.year.end, label=data.tmp2.year.end$value, vjust=0, hjust=1)

現在の目標は、plot1 と plot2 が 1 つの x 軸を共有し、個々のグラフのすべての機能が対応するプロットに保持されることです。

結果は次のようになります。

ここに画像の説明を入力

4

1 に答える 1

1

毎日のデータ セットと年末のデータ セットを単一のデータ フレームに結合してから、ggplot のファセットを使用して単一の日付軸に表示してみてください。コードは次のようになります。

data.tmp1 <- cbind(data.tmp1, data_name="tmp1")
data.tmp1.year.end <- cbind(data.tmp1.year.end, data_name="tmp1")
data.tmp2 <- cbind(data.tmp2, data_name="tmp2")
data.tmp2.year.end <- cbind(data.tmp2.year.end, data_name="tmp2")

data.tmp <- rbind(data.tmp1,data.tmp2)
data.tmp.year.end <- rbind(data.tmp1.year.end, data.tmp2.year.end)

ggplot(data.tmp, aes(x=date, y=value)) +
  geom_line(aes(y=value), size=1) +
  geom_point(data=data.tmp.year.end, col="red") +
  geom_text(data=data.tmp.year.end, aes(label=data.tmp.year.end$value), vjust=0, hjust=1) +
  geom_vline(xintercept=as.numeric(tmp2.date), linetype="dotted") +
  facet_grid( data_name ~ . , scales="free_y")

チャートを与える

ここに画像の説明を入力

于 2015-03-19T14:02:54.313 に答える